对Linq查询DataTable实施'Distinct'感到困惑

时间:2012-06-08 13:27:39

标签: c# .net-4.0

我正在尝试使用LINQ从DataTable返回一组不同的值。

这是我没有“Distinct”部分的代码,因为我正在努力制定正确的linq语句:

 DataTable gridData = RgClientData.DataSource as DataTable;
   var results = from myRow in gridData .AsEnumerable()
             select (myRow.Field<string>("AssignedUser"));

只是在选择的末尾添加“Distinct()”不起作用。我正在努力学习语法,因为我不完全理解“Distinct”部分与Linq查询的关系。

有人能指出我正确的方向......谢谢

3 个答案:

答案 0 :(得分:6)

您的查询需要括在括号中,以便将Distinct添加到其末尾:

var results = (from myRow in gridData .AsEnumerable()
              select myRow.Field<string>("AssignedUser")).Distinct();

或者您可以切换到流利的语法:

var results = gridData.AsEnumerable()
                      .Select(myRow => myRow.Field<string>("AssignedUser"))
                      .Distinct();

答案 1 :(得分:0)

试试这个:

 var results = (from myRow in gridData .AsEnumerable()
             select (myRow.Field<string>("AssignedUser")).Distinct();

答案 2 :(得分:0)

string[] distinctcolumn = (from b in datatable1.AsEnumerable()
                           select b.Field<string>"colimnname")).Distinct().ToArray();

columnname是您想要的不同值的列的名称

你得到字符串数组distinctcolumn,你可以根据需要使用它。