在linq中使用let关键字来组合查询

本文关键字:关键字 组合 查询 let linq | 更新日期: 2023-09-27 17:54:23

我正在编写一个查询,返回需要两个表中的数据的模型列表,我希望let关键字可以帮助我。我是这样开始的:

var TheListOfModels = 
                let Data1 = (from a in MyDC.Table1
                              where ....
                              select new ObjectThatContainsData1()
                              {
                              }).ToList()
                let Data2  = (from b in MyDC.Table2
                              where ....
                              select new ObjectThatContainsData2()
                              {
                              }).Tolist()                 
                select new ObjectThatContainsBothData()
                { 
                     SomeProp1 = from p in Data1
                                 select everything
                     SomeProp2 = from a in Data2
                                 select everything
                }).ToList()

我不太确定如何继续编写最终的select语句,从2 let子句的结果中选择,而不是直接从表中选择。我写的查询结构是一个好的起点还是我应该用另一种方式写?

谢谢。

编辑每个注释:表定义

表1看起来有点像这样:

PeachID | UserID | HarvestDateTime | SomeOtherColumn

表2如下所示:

AppleID | UserID | HarvestDateTime | SomeOtherColumn

我想把所有的桃子和苹果提取到ObjectThatContainsBothData的列表中,where子句基本上是用来过滤HarvestDateTimeUserID

在linq中使用let关键字来组合查询

看起来您正在尝试将Linq查询语法应用于顺序c#代码。只需创建对象并执行两个查询,从两个属性中获取数据:

var result = new ObjectThatContainsBothData() 
             {
                 SomeProp1 = db.Peaches.Where(...).Select(...).ToList(),
                 SomeProp2 = db.Apples.Where(...).Select(...).ToList()  
             };