[英]Count group of each Key Value pair in a list
我正在使用下面的代碼從文本文件中讀取數據,該文本文件由管道('|')分隔符分隔:
class Data
{
public string Key { get; set; }
public string Value { get; set; }
}
using(TextFieldParser csvReader = new TextFieldParser(TEXT_FILE_PATH + ReadFile + ".txt"))
{
csvReader.SetDelimiters(new string[] { FILE_DELIMETER });
csvReader.HasFieldsEnclosedInQuotes = true;
List<Data> KeyValue = new List<Data>();
while (!csvReader.EndOfData)
{
string[] fields = csvReader.ReadFields();
if ( fields[7] != ""
&& fields[8] != ""
&& fields[7] != string.Empty
&& fields[8] != string.Empty)
KeyValue.Add(new Data { Key = fields[7], Value = fields[8] });
}
}
首先,我使用KeyValue Pair將行的特定字段填充到列表中。 之后,填充數據,我想計算每對的計數。 鍵值對重復。
我應該怎么做?
您可以使用LINQ。 例如,如果要將結果存儲在字典中,其中鍵是鍵和值的組合,而值是重復項的計數:
Dictionary<Tuple<string, string>, int> keyValueCounts = KeyValue
.GroupBy(x => Tuple.Create(x.Key, x.Value))
.ToDictionary(g => g.Key, g => g.Count());
您是否也可以幫助我以優化的方式從Dictionary對象讀取數據
例如,如果您想枚舉列表中的所有項目,則可以輸出結果,如下所示:
foreach (Data d in KeyValue)
{
Tuple<string, string> keyval = Tuple.Create(d.Key, d.Value);
Console.WriteLine("Data:{0} Count:{1}", keyval, keyValueCounts[keyval]);
}
您需要執行分組依據,然后執行投影以選擇計數。 請找到以下代碼:
var countList = KeyValue.GroupBy(c=>c.Key).Select(g=> new { g.Key,g.Count()}.ToList();
希望能幫助到你!
這將創建不同鍵/值對的列表,並在主列表中顯示它們的數量:
var resultList = KeyValue.GroupBy(p => new { p.Key, p.Value })
.Select(g => new{
KeyValuePair = g.Key,
Count = g.Count() }).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.