C#列表查询和分组

C#列表查询和分组,c#,asp.net,C#,Asp.net,我有以下清单: OrderId ProductId DateTime 1 1 10.01.2012 1 2 09.01.2012 2 1 11.01.2012 3 1 12.01.2012 3 2

我有以下清单:

OrderId    ProductId    DateTime

1               1                10.01.2012
1               2                09.01.2012
2               1                11.01.2012
3               1                12.01.2012
3               2                13.01.2012
我想从这个列表中提取另一个列表,它只有
ProductId==1
,日期时间是
10.01.2012

i、 e.对于每个订单ID,仅
productId==1

此外,我只想要该项目的最短日期时间版本

因此,对于上面的列表,10.01.2012是productId==1的最短日期时间

结果表

OrderId    ProductId    DateTime

1               1                10.01.2012

我如何才能做到这一点?

这里有一个可能的解决方案:

myList = myList.Where(x.ProductId == 1).OrderBy(x => x.DateTime);
它将按照productId等于1的DateTime值对新列表进行排序。如果只想获取第一个,可以使用列表的.first()方法,例如:

myCustomType = myList.Where(x => x.ProductId == 1).OrderBy(x => x.DateTime).First();

你的意思是这样的吗
list1.Where(id=>id.ProductId==1).OrderBy(p=>p.DateTime).FirstOrDefault()
但我只能获取ProductId==1条记录。if productId与orderId不相同。我想采用if productId与我的AllordId相同。这个意思。orderId==1包含productId==1,orderId==2包含productId==1,orderId==3包含productId==1。你明白我的意思吗?我想要productId==1,但是如果这个productId使用了每个orderId。orderId==1,orderıd==2,orderıd==3。存在多少这样的
orderId
?{1,2,3,…}所有这些都应该有一个特定的产品,您需要选择一个带有最小日期的产品?请编辑问题,并提供更多详细信息,因为如何处理列表?ProductId==1为真,但这将是动态的。因为我不知道哪个productId和每个OrderId是一样的。所以我只有一个列表和一个列表,我要展示给你们看。现在;我怎么知道哪个productId与myList中的每个orderId相同?你想在订单中找到重复的产品吗?不,首先我想在订单中找到重复的产品。但我不知道我该怎么做?