C# C linq to datatable中的Where子句
我在数据表中有两列Col1和col2,如下所示: 注: col1仅包含美国或英国,不包含其他值 现在,我的要求是根据美国和英国将价值观分开 如下所示,分别获取美国和英国对应的所有值 前面我已经用linq代码完成了这项工作。当时我的要求很简单, 只需获取col2中的所有记录:C# C linq to datatable中的Where子句,c#,linq,C#,Linq,我在数据表中有两列Col1和col2,如下所示: 注: col1仅包含美国或英国,不包含其他值 现在,我的要求是根据美国和英国将价值观分开 如下所示,分别获取美国和英国对应的所有值 前面我已经用linq代码完成了这项工作。当时我的要求很简单, 只需获取col2中的所有记录: 现在,在新的要求中,我需要根据美国和英国将它们分开。当您需要根据某列的值将项目分开时,您可以使用GroupBy,如下所示: var groups = dt.AsEnumerable().GroupBy(s => s.F
现在,在新的要求中,我需要根据美国和英国将它们分开。当您需要根据某列的值将项目分开时,您可以使用GroupBy,如下所示:
var groups = dt.AsEnumerable().GroupBy(s => s.Field<string>("col1"));
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"];
string[] data = dt.AsEnumerable().Where(s => s.Field("col1") == "us").Select(s => s.Field("col2")).ToArray();
或者获取特定密钥的数字,如下所示:
var groups = dt.AsEnumerable().GroupBy(s => s.Field<string>("col1"));
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"];
string[] data = dt.AsEnumerable().Where(s => s.Field("col1") == "us").Select(s => s.Field("col2")).ToArray();
当需要根据某列的值分隔项目时,可以使用GroupBy,如下所示:
var groups = dt.AsEnumerable().GroupBy(s => s.Field<string>("col1"));
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"];
string[] data = dt.AsEnumerable().Where(s => s.Field("col1") == "us").Select(s => s.Field("col2")).ToArray();
或者获取特定密钥的数字,如下所示:
var groups = dt.AsEnumerable().GroupBy(s => s.Field<string>("col1"));
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"];
string[] data = dt.AsEnumerable().Where(s => s.Field("col1") == "us").Select(s => s.Field("col2")).ToArray();
要获得col1等于我们的所有col2值的列表,可以使用如下代码:
var groups = dt.AsEnumerable().GroupBy(s => s.Field<string>("col1"));
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"];
string[] data = dt.AsEnumerable().Where(s => s.Field("col1") == "us").Select(s => s.Field("col2")).ToArray();
要获得col1等于我们的所有col2值的列表,可以使用如下代码:
var groups = dt.AsEnumerable().GroupBy(s => s.Field<string>("col1"));
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"];
string[] data = dt.AsEnumerable().Where(s => s.Field("col1") == "us").Select(s => s.Field("col2")).ToArray();
查看可枚举项。Where查看可枚举项。Where OK,如何分别检索字符串[]中的值(对于us和uk分离?@user2979719迭代字典以打印值请参见编辑。@user2979719为什么要这样做?您的意思是您无法使其工作?好的,如何在字符串[]中分别检索值(对于us和uk分离?@user2979719迭代字典以打印值请参见编辑。@user2979719为什么要这样做?您的意思是无法使其工作?请使用System.Data.DataSetExtensions.dll引用并使用System.Data.DataSetExtensions.dll引用