3

IEnumerableLINQ 式を使用して、UI にバインドできる結果セットから列を動的に選択しようとしています。この時点で、LINQ 式でのプロジェクションの基本を把握するのに苦労しています。

次のような文字列のリストがあるとしましょう。

Dim myStrings = {"one", "two", "three"}.ToList()

ラムダ式を使用すると、次のようにして文字列の長さのコレクションを簡単に選択できます。

Dim myStringLengths = myStrings.Select(Function(x) x.Length)

このステートメントの結果はmyStringLengths、 elements を持つというコレクションになります3, 3, 5

私が理解できないように見えるのは、LINQ 式を使用して同等の結果を生成する方法です。

編集: LINQ 式と言うときSystem.Linq.Expressionsは、LINQ ステートメントまたはラムダ式の標準形式ではなく、名前空間で API を使用することについて話しています。上記で明確にわかるように、私はそのように投影を生成する方法にすでに精通しています。

どんな助けでも大歓迎です。

4

2 に答える 2

3
 var item = Expression.Parameter(typeof(string), "x");
 var length = Expression.PropertyOrField(item, "Length");

 new string[] {"one", "two", "three"}
      .AsQueryable()
      .Select(Expression.Lambda<Func<string, int>>(length, item));

式を使用するには IQueryable が必要です (ToList などで IEnumerable に戻すことができます)。次に、Lambda を式ツリーとして生成します (長さの例は上記で実行されています)。申し訳ありませんがC#で

于 2012-07-02T19:05:51.143 に答える
0

C# では、次のようになります。

var myStringLengths = myStrings
                        .Select((s) => s.Length);
于 2012-07-02T18:31:59.880 に答える