我相信我必须使用JOIN,但我无法弄清楚如何使用Linq正确使用它
我有两个数组,
Array1 =所有成员的数组(allMembers)
每个成员都是一个将memberID作为字符串字段
的对象Array2 = MemberID字符串数组(membersToSelect)
我想返回所有成员,其中memberID列在了Array2。
这是我到目前为止所尝试的
MemberObject[] selectedObjects = allMembers
.Join( membersToSelect,
memberID => memberID,
member => member,
(memberID, member) => memberID == member.memberID)
.ToArray();
答案 0 :(得分:2)
你应该可以这样做:
var selectedObjects = allMembers
.Where(x => membersToSelect.Contains(x.memberID))
.ToArray();
答案 1 :(得分: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
。