日期:2014-05-20  浏览次数:21422 次

linq 中 group by 分组字符中有空值,表达式怎么写??
举个例子:
有个表 tProduct 其中 字符为 ProductID,Quantity,Place(可为空),这其中的记录也可以 重复的 
现在这个表中有两条记录
aaa 3 null
bbb 7 null

现在 采用linq查询其中的记录(如果productid和place相同就累加在一起),不要想我这个表设计的是否合理,我只是举例子。

vat q=db.tProduct.GroupBy(a => new { a.ProductID, a.Place }).Select(a => new {a.Key,SumQTY=a.Sum(b=>b.Quantity)});
这个q的结果竟然 有四条记录,分别为:
aaa 3 null
bbb 7 null
aaa 3 null
bbb 7 null

怎么会出现这种情况 ,,是不是由于place为空值,导致的,如果是的,,那怎么解决空值分组这个问题呢

------解决方案--------------------
这样行不?

vat q = db.tProduct.Where(a => a.ProductID.HasValue && a.Place.HasValue).GroupBy(a => new { a.ProductID, a.Place }).Select(a => new {a.Key,SumQTY=a.Sum(b=>b.Quantity)});

------解决方案--------------------
写法不对。
var result =
from t in db.tProduct 
group t by new { t.ProductID, t.Place} into g
select new { g.Key,
TotalPrice = g.Sum(t => t.Quantity)
};


------解决方案--------------------
探讨
......
你上面的式子跟我的式子不是一样的吗?有什……