如何做多对多LINQ实体分组查询?

时间:2013-12-09 17:30:14

标签: c# linq linq-to-entities

我可以在这个网站上看到很多关于我所追求的查询的例子,但是我无法与它们联系起来以及它们是如何工作的。我想知道你是否可以帮助我。

我在Visual Studio中设置了多对多的表和与实体设计器的关系。

tblQuotes
ID | QuoteNo | Date

tblItems
ID | PartNo | Desc

tblSuppliers
ID | Supplier | email

tblQIS (quotes items suppliers)
ID | SupplierID | QuoteID | ItemID

我已经放入了一些测试数据,并且已经开始尝试输入这个,但我想我首先需要按引用分组然后按供应商分组,以便在正确的视图中获取详细信息。

var tblQuotes = from d in db.tblQuotes_Items_Suppliers
                    .Include(t => t.tblItems)
                    .Include(t => t.tblQuotes)
                    .Include(t => t.tblSuppliers)
                group by (d.QuoteID,d.SupplierID)
                select d;

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

var tblQuotes = 
    from d in db.tblQuotes_Items_Suppliers    // or tblQIS whatever the name
    group d by new
    {
        d.QuoteID,
        d.SupplierID
    }  into g
    select g;

这将为您提供由QuoteID和SupplierID分组的报价

<强>更新

tblQuotes是分组引号的列表(IQueryable),因此您可以访问其他实体,如下所示:

 var firstGroupOfQuotes = tblQuotes.First(); // will give you the first group of quotes
 var firstQuote = firstGroupOfQuotes.First(); // will give you the first quote in the first group
 var item = firstQuote.tblItems; // will give you the item of this quote
 var partNo = item.PartNo; // will give you the PartNo of this item