首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq到SQL不会产生任何结果。

Linq到SQL不会产生任何结果。
EN

Stack Overflow用户
提问于 2017-04-28 03:59:35
回答 1查看 74关注 0票数 0

你好,我想知道为什么这个linq语句没有产生任何结果?

请看下面的代码

sql语句

代码语言:javascript
复制
select MAX(sop.EndDate), ADR.Address1, itm.Name, sum(sop.MadeCount) from SnapshotOrderPositionHistories sop
inner join Addresses adr on adr.id = sop.Address_Id
inner join Items itm on itm.Id = sop.Item_Id
where adr.TraderId = 11 and sop.EndDate >= '2017-04-01 00:00:00.0000000' and sop.EndDate <= '2017-04-30 00:00:00.0000000' GROUP BY adr.Address1, itm.Name

linq语句

代码语言:javascript
复制
    var getDeliveriesByAddress = from snapShots in db.SnapshotOrderPositionsHistories
                                  join addresses in db.Addresses on snapShots.Address_Id equals addresses.Id
                                  join itms in db.Items on snapShots.Item_Id equals itms.Id
                                  where addresses.TraderId == financialDocument.Trader.Id && (snapShots.EndDate >= financialDocument.StartDate & snapShots.EndDate <= financialDocument.EndDate)
                                  group new { addresses, itms } by new { addresses.Address1, itms.Name} into QueryList
                                 select new { List = QueryList };

我正在使用实体框架

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-28 04:24:12

你错过了一个&&的位置,投影是不正确的。你需要这个:

代码语言:javascript
复制
select new 
{ 
    MaxEndDate = QueryList.Max(q=>q.snapShots.EndDate),
    Address1 = QueryList.Key.Address1,
    Name = QueryList.Key.Name ,
    TotalMadeCount = QueryList.Sum(q=>q.snapShots.MadeCount) 
};

更新

我再次写了这个问题,以表明联盟和名称是多么重要。实际上,关于名称,我只将QueryList更改为gr,这在组的上下文中更有意义,而不是QueryList

代码语言:javascript
复制
var getDeliveriesByAddress = from snapShots in db.SnapshotOrderPositionsHistories
                             join addresses in db.Addresses 
                             on snapShots.Address_Id equals addresses.Id
                             join itms in db.Items 
                             on snapShots.Item_Id equals itms.Id
                             where addresses.TraderId == financialDocument.Trader.Id 
                                && snapShots.EndDate >= financialDocument.StartDate 
                                && snapShots.EndDate <= financialDocument.EndDate
                             group new { addresses, itms } 
                             by new { addresses.Address1, itms.Name} into gr
                             select new 
                             {  
                                 MaxEndDate = gr.Max(q=>q.snapShots.EndDate),
                                 Address1 = gr.Key.Address1,
                                 Name = gr.Key.Name ,
                                 TotalMadeCount = gr.Sum(q=>q.snapShots.MadeCount) 
                             };

SQL查询也是如此。

代码语言:javascript
复制
SELECT 
    MAX(sop.EndDate)
    , ADR.Address1
    , itm.Name
    , SUM(sop.MadeCount) 
FROM SnapshotOrderPositionHistories sop
INNER JOIN Addresses adr 
   ON adr.id = sop.Address_Id
INNER JOIN Items itm ON itm.Id = sop.Item_Id
WHERE 
    adr.TraderId = 11 
AND sop.EndDate >= '2017-04-01 00:00:00.0000000' 
AND sop.EndDate <= '2017-04-30 00:00:00.0000000' 
GROUP BY adr.Address1, itm.Name
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43671741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档