gpt4 book ai didi

c# - 如何在 JOIN 扩展方法中实现左连接

转载 作者:IT王子 更新时间:2023-10-29 04:13:39 27 4
gpt4 key购买 nike

我正在尝试对 p.Person 表的这种查询实现外连接。我该怎么做?

这个例子取自http://ashishware.com/DSLinqExample.shtml

var onlyinfo = p.Person
.Where(n => n.FirstName.Contains('a'))
.Join(p.PersonInfo,
n => n.PersonId,
m => m.PersonId,
(n, m) => m)
.ToArray<Persons.PersonInfoRow>();

最佳答案

LINQ 中的左联接通常使用组联接建模,有时与 DefaultIfEmptySelectMany 结合使用:

var leftJoin = p.Person.Where(n => n.FirstName.Contains("a"))
.GroupJoin(p.PersonInfo,
n => n.PersonId,
m => m.PersonId,
(n, ms) => new { n, ms = ms.DefaultIfEmpty() })
.SelectMany(z => z.ms.Select(m => new { n = z.n, m }));

这将给出一个序列对 (n, m),其中 n 是来自 p.Person 的条目,m 是条目来自 p.PersonInfo,但如果没有匹配项,m 将为 null。

(它完全未经测试,顺便说一句 - 但无论如何应该给你这个想法:)

关于c# - 如何在 JOIN 扩展方法中实现左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3792888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com