LINQ按语法顺序排​​列

时间:2012-05-15 22:31:32

标签: .net linq

由于order by子句,以下行不会编译。我在语法上做错了什么?

   ddlMIP.DataSource = dt.AsEnumerable().Select(row => row.Field<string>("MIP_NO").ToString()).Distinct().OrderBy(row => row.Field<string>("MIP_NO").ToString()).ToList();

谢谢!

3 个答案:

答案 0 :(得分:0)

你的select正在调用一串字符串,因为你正在调用ToString()

这意味着在你的OrderBy中,llambda中“row”的值实际上将是一个字符串本身。你可以只做OrderBy(r =&gt; r)

答案 1 :(得分:0)

ddlMIP.DataSource = dt.AsEnumerable().Select(row => row.Field<string>("MIP_NO").ToString()).Distinct().OrderBy(row => row.Field("MIP_NO").ToString()).ToList();

看起来OrderBy()部分中的list运算符导致了问题。

答案 2 :(得分:0)

你哪里出错了;当涉及到排序时,您只剩下先前在.Select方法中选择的字符串集合。您可以通过微小的改动轻松实现您想要做的事情。以下将选择字段MIP_NO作为字符串,然后将其分配给不同的有序可枚举集合。

ddlMIP.DataSource = dt.AsEnumerable()
    .Select(row => row.Field<string>("MIP_NO").ToString())
    .Distinct()
    .OrderBy(mipNo => mipNo);