linq 3表左联
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linq 3表左联相关的知识,希望对你有一定的参考价值。
第一表左联第二表,第二表左联第三表
表a
id name
1 aaa
2 bbb
表b
id name aid
1 xxx 1
2 yyy 1
3 zzz 1
表c
id name bid
1 lll 2
2 mmm 2
3 nnn 3
最后显示出
aaa xxx
aaa yyy lll
aaa yyy mmm
aaa zzz nnn
bbb
求帮忙,用linq
join t2 in 表b.DefaultIfEmpty() on t1.id equals t2.aid
join t3 in 表c.DefaultIfEmpty() on t2.id equals t3.bid
select new
t1.name,
t2.name,
t3.name
;本回答被提问者和网友采纳
将 linq 转换为非 linq
【中文标题】将 linq 转换为非 linq【英文标题】:Converting linq to non linq 【发布时间】:2020-02-19 09:07:01 【问题描述】:您好,我一直在 Visual Studio 2008 .net 2 上使用 net 2,看来我的 linq 代码在这里不起作用。我在互联网上进行了一些搜索,但我没有看到从 linq 到非 linq。 这是我试图转换的代码。
var listWithoutCol = fmas.Select(x => new x.NcrbNo, x.LotInfo, x.FailureMode, x.JobOwner, x.Status, x.Originator, x.DateCreated ).ToList();
变量listWithoutCol将用于导出到excel。
希望你明白我的意思。
【问题讨论】:
只需遍历fmas
并自己创建模型并将它们添加到列表 listWithoutCol
?
C#2 也不支持匿名类型。 var
也不是,所以这并不像使用 foreach
那样简单。
是时候升级了,别再乱用不受支持的软件和框架了。
@Adriani6 推荐并实现它是我们的工作!
@MichaelRandall 是的,是的,它不应该是。我们,开发人员从另一个角度看待业务案例,而不是非技术“项目经理”,他们需要有理由花钱购买当前“有效”的东西。大约 2 年以来,我一直试图将我们的“过时”产品转移到更新的平台上,而且......它没有发生,因为它“有效”。但这只是一个原因,显然还有许多其他问题,例如过时的环境(船只对此不利)、第三方集成等。我相信您已经知道了。咆哮:)
【参考方案1】:
建议您更新到支持 linq 的较新版本。 但是你可以创建一个新类:
class Job
public int NcrbNo; // use proper types.
public int LotInfo;
public int FailureMode;
public int JobOwner;
public int Status;
public int Originator;
public DateTime DateCreated;
然后只需使用 foreach 进行迭代。
List<Job> listWithoutCol = new List<Job>();
foreach (FmasType element in fmas) // Replace FmasType with the type it is.
Job job = new Job();
job.NcrbNo = element.NcrbNo;
job.LotInfo = element.Lotinfo;
job.FailureMode = element.FailureMode;
job.JobOwner = element.JobOwner;
//..etc..
listWithoutCol.add(element);
【讨论】:
fmas 类型是什么?以上是关于linq 3表左联的主要内容,如果未能解决你的问题,请参考以下文章
linq介绍及工作中应用两例——左联与内联,linq循环方法