web-dev-qa-db-ja.com

Linqは特定のプロパティを別のオブジェクトに選択しますか?

Bloopsのコレクションがあるとしましょう

Class Bloop
  Public FirstName
  Public LastName
  Public Address
  Public Number
  Public OtherStuff
End Class

それから私はラジーのクラスを持っています

Class Razzie
  Public FirstName
  Public LastName
End Class

Linqを使用して、Bloopsのコレクション内のすべてのBloopsからFirstNameとLastNameを選択し、Razziesのコレクションを返すことはできますか?それとも、For-Loopに限定して仕事をしているのですか?

混乱を解消するために、VBまたはC#のいずれかを使用します。また、これにより、( "Where"句の使用について).

27
Russ Bradberry

これは仕事をするはずです:

_Dim results = From item In bloops _
              Select New Razzie() With _
              { _
                  .FirstName = item.FirstName, _
                  .LastName = item.LastName _
              }
_

そして、結果を_IEnumerable<Bloop>_(LINQクエリが返すもの)から配列または_List<Bloop>_に変換する場合は、ToArray()またはToList()への呼び出しを追加するだけですそれぞれ拡張メソッド。

編集:コードが修正され、有効なVB.NET 9構文が含まれるようになりました。

29
Noldorin
List<Bloop> myBloops = new List<Bloops>;
//populate myRazzies
List<Razzie> myRazzies = myBloops.Select(x => new Razzie() { FirstName = x.FirstName, LastName = x.LastName}).ToList();
43
KClough
public void Linq9()
{
    string[] words = { "Apple", "BlUeBeRrY", "cHeRry" };

    var upperLowerWords =
        from w in words
        select new { Upper = w.ToUpper(), Lower = w.ToLower() };

    foreach (var ul in upperLowerWords)
    {
        Console.WriteLine("Uppercase: {0}, Lowercase: {1}", ul.Upper, ul.Lower);
    }
}
2
nologo
        C# Sample - Thanks to earlier posters.

        List<clsObj> myList = new List<clsObj>();
        clsObj clsObjInstance = null;
        for (int i = 0; i < 10; i++)
        {
            clsObjInstance = new clsObj() { x = (i+1) % 3, a = "A" + i.ToString() };
            myList.Add(clsObjInstance);
        }

        List<int> extIntList = myList.Select(u => u.x).ToList();
        foreach (int u in extIntList)
            Console.Write(u.ToString() + "\t");

        List<string> extStringList = myList.Select(u => u.a).ToList();
        foreach (string u in extStringList)
            Console.Write(u + "\t");
0
Md Saidul Karim

あるタイプから別のタイプへの変換は、 Enumerable.Select を使用して実行できます。

実際、intを文字列に変換するクエリを示す101 linqサンプルの sample があります。

0
Amy B