我在数据表中有两列Col1
和col2
,如下所示:
请注意:
col1仅包含我们或英国,没有其他值
现在我的要求是根据我们和英国来分离价值。
如下所示,分别获取与我们和英国相对应的所有值。
早些时候我用linq代码完成了这个。那时我的要求很简单,
只需获取col2
中的所有记录:
string[] data = dt.AsEnumerable()
.Select(s => s.Field<string>("col2"))
.ToArray<string>();
现在在新要求中,我需要根据我们和英国单独使用它们。
答案 0 :(得分:2)
如果您需要根据某列的值分隔商品,请使用GroupBy
,如下所示:
var groups = dt.AsEnumerable().GroupBy(s => s.Field<string>("col1"));
拥有群组后,您可以对其进行迭代,或者在Dictionary<string,string[]>
中“实现”它们,如下所示:
var byCol1 = groups.ToDictionary(g => g.Key, g => g.Select(s => s.Field<string>("col2")).ToArray());
您可以输出每个键的数字,如下所示:
foreach (var p in byCol1) {
Console.WriteLine("{0} : {1}", p.Key, string.Join(", ", p.Value));
}
或获取特定键的数字,如下所示:
string[] items = byCol1["us"];
答案 1 :(得分:0)
要获取col1等于&#34; us&#34;的所有col2值的列表,您可以使用以下代码:
string[] data = dt.AsEnumerable().Where(s => s.Field("col1") == "us").Select(s => s.Field("col2")).ToArray();