0

我相信我必须使用 JOIN 但我不知道如何使用 Linq 正确使用它

我有两个数组,

Array1 = 所有成员的数组 (allMembers)

每个成员都是一个具有 memberID 作为字符串字段的对象

Array2 = MemberID 字符串数组 (membersToSelect)

我想返回所有成员 ID 在 Array2 中列出的成员。

这是我迄今为止尝试过的

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

2 回答 2

2

好像您不了解 LINQ 连接语法。这种特殊的重载允许您指定将在比较中使用哪些属性/对象(实际上,使用您指定的键的散列来创建查找)。

主要概念是它与 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 回答
2

你应该能够做到这一点:

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