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

时间:2013-01-19 16:59:18

标签: c# linq

我正在编写一个查询,返回需要两个表中数据的模型列表,我希望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子句的结果中选择而不是直接从表中选择。查询的结构是我写的一个好的起点还是我应该用另一种方式写出来?

感谢。

每条评论编辑:表格定义

Table1看起来有点像这样:

PeachID | UserID | HarvestDateTime | SomeOtherColumn

表2看起来像这样:

AppleID | UserID | HarvestDateTime | SomeOtherColumn

我希望将所有桃子和苹果提取到ObjectThatContainsBothData列表中,而where子句基本上用于过滤HarvestDateTimeUserID

1 个答案:

答案 0 :(得分:3)

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

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