using System.Collections.Generic;
namespace ProgramNamespace
public string APIVersion;
public static List<String> processData(
IEnumerable<string> lines)
AppData appObj= new AppData();
List<AppData> appDetailsList= new List<AppData>();
foreach (string appData in lines)
string[] tempString =appData.Split(',');
appObj.appName=tempString[0];
appObj.APIName=tempString[1];
appObj.APIVersion=tempString[2];
appDetailsList.Add(appObj);
List<string> distinctAPIs= appDetailsList.Select(o => o.APIName).Distinct().ToList();
List<String> retVal = new List<String>();
foreach (string apiVal in distinctAPIs)
var newList=(from order in appDetailsList
where order.APIName.Equals(apiVal)
var productCounts = (from record in newList
group record by new { record.APIVersion, record.appName } into grouping
orderby grouping.Key.APIVersion
appName = grouping.Key.appName,
Quantity = grouping.Count()
public static void Main(string[] args)
List<String> retVal = processData(
File.ReadAllLines("input.txt"));
File.WriteAllLines("output.txt", retVal);
Console.WriteLine(ex.Message);