0

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

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

谢谢!

4

3 回答 3

0

由于您正在调用 ToString(),因此您的选择正在投影字符串集合

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

于 2012-05-15T22:36:21.043 回答
0
ddlMIP.DataSource = dt.AsEnumerable().Select(row => row.Field<string>("MIP_NO").ToString()).Distinct().OrderBy(row => row.Field("MIP_NO").ToString()).ToList();

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

于 2012-05-15T22:36:53.473 回答
0

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

ddlMIP.DataSource = dt.AsEnumerable()
    .Select(row => row.Field<string>("MIP_NO").ToString())
    .Distinct()
    .OrderBy(mipNo => mipNo);
于 2012-05-16T09:19:41.590 回答