0

JOINを使用する必要があると思いますが、Linqを使用してJOINを適切に使用する方法がわかりません。

私は2つのアレイを持っています、

Array1 =すべてのメンバーの配列(allMembers)

各メンバーは、文字列フィールドとしてmemberIDを持つオブジェクトです。

Array2 = MemberID文字列の配列(membersToSelect)

memberIDがArray2にリストされているすべてのメンバーを返したい。

これは私がこれまでに試したことです

MemberObject[] selectedObjects = allMembers
                                           .Join( membersToSelect, 
                                           memberID => memberID, 
                                           member => member, 
                                           (memberID, member) => memberID == member.memberID)
                                          .ToArray();
4

2 に答える 2

2

あなたはこれを行うことができるはずです:

var selectedObjects = allMembers
    .Where(x => membersToSelect.Contains(x.memberID))
    .ToArray();
于 2013-03-18T20:29:44.407 に答える
2

LINQ結合構文を理解していないようです。この特定のオーバーロードにより、比較で使用されるプロパティ/オブジェクトを指定できます(実際には、指定したキーのハッシュを使用してルックアップを作成します)。

主な概念は、結合列(2番目と3番目のパラメーター)を決定するという点で、SQL結合と非常によく似ているということです。

allMembers // The original collection
    .Join(membersToSelect, // The collection to join
        allMem => allMem.MemberID, // Selects your original collections join column
        joinMem => joinMem, // Selects your joining collections join column (or element)
        (allMem, joinMem) => allMem) // This "combines" matching elements into the new element you specify.
        .ToArray();

この特定の例では、(結合された要素の)最終変換により、結果はブール値の配列になりますが、この場合はあまり役に立ちません。その最後のパラメーターは、最終的には元の/結合されたコレクションに対して取得する一致です。言い換えれば、上記はあなたの結合(allMem, joinMem) =>の一致するMember/です。string

于 2013-03-18T20:49:24.613 に答える