id vid Amount Date
a 1 10 Today
a 1 5 Yesterday
b 2 6 Today
b 2 7 Yesterday
如何使用linq获取记录,其中每个vid组bi Id和vid的今天金额大于昨天?
答案 0 :(得分:2)
如果我理解正确,你的课程就像这样:
class Data
{
public string Id;
public int Vid;
public int Amount;
public DateTime Date;
}
此类的实例的枚举,其中包含多个共享相同Vid
值但具有不同Amount
和Date
值的实例。您想要的是使所有其他实例的Date
和Amount
值同时具有相同Vid
的所有实例。完成后,您希望按Id
和Vid
在这种情况下,您需要以下查询:
var myList = new List<Data>();
var result = myList.SelectMany(d1 => myList.Where(d2 => d2.Vid == d1.Vid && d1.Amount < d2.Amount && d1.Date < d2.Date)).OrderBy(data => data.Vid).ThenBy(data => data.Id).ToList();
我们在这里做的是:
myList
中的所有元素。
Vid
但更大Date
和Amount
的所有其他元素。SelectMany
将所有结果展平为单个集合。Vid
排序生成的枚举,然后按Id
。