如何使用Linq获取List中的项目摘要

时间:2013-09-27 07:50:42

标签: c# .net vb.net linq

Public Class Product
public  Name As String
public  ID as String
public  ShelfList as List(of Shelf)
End Class 

Public Class Shelf
public  Name As String
public  ID as String
public  Row as List(of Row)
End Class

Public Class Row
public  Name As String
public  ID as String
End Class

以上是我的课程。 假设产品可以在不同的货架和不同的行中找到。 另外一行可以容纳多个产品。

数据将与此类似。

List(of Products) -> List(of Shelf) -> List(of Rows)

以下是类似的数据

Boost ->  Shelf 1 -> Row 1,Row 2 
          Shelf 2 -> Row 2

Horlicks ->Shelf 1-> Row 1

Complain ->Shelf 2-> Row 2,Row 3

Colgate -> Shelf 2- Row 3

所以从上面的产品列表中我需要生成摘要。 (行名和每行中的项目数)

   Shelf 1 Row 1 - 2 (Boost and horlicks)
   Shelf 1 Row 2 - 1 (Boost)
   Shelf 2 Row 1 - 1 (Horlicks)
   Shelf 2 Row 2 - 2 (Complain and Boost)
   Shelf 2 Row 3 - 1 (Colgate)

注意:

  1. 货架1第1行是第一个货架第一行的名称。

  2. 无需在括号中显示项目名称。现在只是为了理解而展示。

  3. 如何使用LINQ实现此目的。 我使用的是VB.NET,目标是CE 3.5。 C#建议也表示赞赏。提前谢谢。

2 个答案:

答案 0 :(得分:0)

我认为你必须改变你的数据结构

我会这样做

货架清单 - >行列表 - >产品清单

为什么产品会跟踪行? 它是包含不同产品的行。

每个货架

选择货架编号 - >行号 - >产品名称

答案 1 :(得分:0)

例如,你可以嵌套LINQ查询(对不起,我是一个C级的人);

var a = from t1 in Products
        select new 
        {
             Name = t1.Name,
             Summary = String.Join(", ",(from t2 in t1.ShelfList
                        select t2.Name))
        };

这样的事情应该做,虽然我忽略了第三层。