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

参考技术A var r= from t1 in 表a 

                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循环方法

Linq 2 表加入但需要来自 3 的数据不需要加入所有 3

LINQ to SQL(基于3个表插入事实表)

Linq一对多联合查询

使用 LINQ 的 INNER JOIN 3 数据表

Linq基础增删改查