0

次の行は、orderby句のためにコンパイルされません。構文で何が間違っていますか?

   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()を呼び出しているため、selectは文字列のコレクションを投影しています。

つまり、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 に答える