2011-08-03 56 views
0

我有一个列表本身包含n个列表(在这个例子中有4个列表)。我需要做的就是输出作为“所需的查询结果”下方如何提取并合并n个列表的列表?

名单列表:

Product  Year DY 
Comp   1992 110.0 
Comp   1993 200.0 
Non-Comp  1990 45.2 
Non-Comp  1991 50.0 
Non-Comp  1992 55.0 
Non-Comp  1993 100.0 

Product  Year DY 
Comp   1992 170.0 
Non-Comp  1990 64.8 
Non-Comp  1991 75.0 
Non-Comp  1992 85.0 

Product  Year DY 
Non-Comp  1991 25.0 

Product  Year DY 
Non-Comp  1990 37.0 

必要查询结果:

Product  Year DY1  DY2  DY3  DY4 
Comp   1992 110.0 170.0  
Comp   1993 200.0   
Non-Comp  1990 45.2 64.8    37.0 
Non-Comp  1991 50.0 75.0  25.0 
Non-Comp  1992 55.0 85.0   
Non-Comp  1993 100.0 

记得有可能超过4在列表中列出,所以我想像这样的事情:

foreach (var element in myList) 
{ 
    // some hard work 
} 
+4

你到目前为止尝试过什么? –

+2

盯着它... – descf

+0

myList是什么类型? IEnumerable (什么是T) –

回答

1

很难回答这个问题,没有更好地描述您的输入/输出对象模型,但我认为您想要:

  1. 将您的项目列表展平为单个(平面)项目序列。
  2. 将这些项目与包含项目的产品和年份的复杂关键字分组。
  3. 将每个组中的项目投影到它们各自的DY中。

喜欢的东西:

var query = myListOfLists.SelectMany(list => list) // Flatten 
         .GroupBy(item => new { item.Product, item.Year }, // Group 
            item => item.DY); // Project 
0

像这样的事情?

List<List<Product>> nestedList; 

List<Product> = allProducts = nestedList.SelectMany(x => x); 
var groupped = allProducts 
    .GroupBy(x => new { Product = x.Product, Year = x.Year}, x => x.DY);