gpt4 book ai didi

c# - Linq to Sql 联合语句

转载 作者:太空宇宙 更新时间:2023-11-03 20:08:05 28 4
gpt4 key购买 nike

我有两个要合并的结果集(LINQ to SQL/Entity)

var ldrSet = (from ldr in Leader
join emp in employee
on ldr.ID equals emp.ID
where ldr.ID.Contains("123")
select new {ID = ldr.ID, Name = emp.firstName + " " + emp.lastName, flag = "Edit"});

var allEmpSet = (from emp in employee
where emp.ID.Contains("123")
select new {ID = ldr.ID, Name = emp.firstName + " " + emp.lastName, flag = "New"});

var results = ldrSet.Union(allEmpSet);

当我运行这个查询时,我得到这样的结果:

123 Joe Blow Edit

123 Joe Blow New

234 Jane Smith New

345 John Doe New

我明白为什么会发生这种情况,但有没有办法仅通过使用 ID 进一步过滤此结果集?

我想返回一条记录,Edit 记录胜过 New 记录。所以我只想要这个:

123 Joe Blow Edit

234 Jane Smith New

345 John Doe New

最佳答案

在这种情况下处理事情的正确方法不是联合。它是使用左外连接而不是 LINQ 默认的内连接。这将允许您一次选择所有行,并在数据匹配适当时设置 flag:

var results = from e in employee
join l in leaders on l.ID equals e.ID into ls
from l in ls.DefaultIfEmpty()
select new {
e.ID,
Name = e.firstName + e.lastName,
flag = (p == null ? "New" : "Edit")
};

关于c# - Linq to Sql 联合语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21765138/

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