0

我有一个通过 linq 调用的存储过程(我无法编辑)。

存储过程返回值(下面更复杂但重要的数据):

Customer   Stock Item   Date       Price   Priority  Qty
--------------------------------------------------------
CUST1      TAP         01-04-2012  £30     30        1 - 30
CUST1      TAP         05-04-2012  £33     30        1 - 30
CUST1      TAP         01-04-2012  £29     20        31 - 99
CUST1      TAP         01-04-2012  £28     10        1 - 30

我试图将此列表限制为在 LINQ 中具有唯一日期和唯一数量的行。我想删除具有更高优先级的项目,留下具有唯一日期和数量的行。

我已经尝试了几种group by使用Maxandorder by的方法,但都没有得到结果。

有没有办法通过 linq 做到这一点?

编辑:

设法将 brad-rem 的答案转换为 VB.net。

如果有人需要,请使用以下语法:

returnlist = (From p In returnlist
              Order By p.Qty Ascending, p.Priority
              Group By AllGrp = p.Date, p.Qty Into g = Group
              Select g.First).ToList
4

1 回答 1

1

下面怎么样。它按日期和数量分组并对其进行排序,以便优先级较低。然后,它只选择每个组中的第一个项目,它们都是优先级较低的项目:

var result = from d in dbData
orderby d.Priority 
group d by new
{
    d.Date,
    d.Qty
} into group1
select group1.First();
于 2012-05-03T18:17:41.503 回答