1
-------------
Products |
-------------
id |
name |
price |
image |
-------------
-------------
Sizes |
-------------
id |
name |
quantity |
id_product |
-------------
在表中Sizes
我在每種尺寸的產品中保留不同的尺寸和數量。例如,我在我的產品中有一條牛仔褲,但在表Sizes
中,我將它們放在Sizes.Name M和數量20,Sizes.Name XL和數量30等中。LINQ在已連接表中的數據透視表
在我的項目中,當我想要顯示所有的數據IM gridview的有某事林這樣
id |name |price | size_name | quantity |
-----------------------------------------------------------
1 jeans 100 M 20
1 jeans 100 XL 30
1 jeans 100 S 45
等
我想要顯示的是:
id |name |price | S | M | XL |
-------------------------------------------------
1 jeans 1000 45 20 30
所以我讀到我必須使用一個關鍵點,但不知道如何開始以及接下來要做什麼。下面是我的一些代碼:
var query = from product in context.Products
join size in context.Sizes on product.ID equals r.Product.ID
//what's the next step?
select new { };
dataGridView1.DataSource = query.ToList();
===================================
編輯
====================================
現在我已經這樣了
好吧{id, name}
不是關鍵, 但有似乎是另一個問題,
var q = (from p in context.Produkty
join r in context.Rozmiary
on p.ID equals r.Produkt.ID
into sizes
select new
{
S = sizes.Where(x => x.Nazwa == NazwaRozmiaru.S).Sum() ?? 0
});
dataGridView1.DataSource = q.ToList();
給了我這個
Error 2 'System.Collections.Generic.IEnumerable<Magazynier.Model.Rozmiary>' does not contain a definition for 'Sum' and the best extension method overload 'System.Linq.ParallelEnumerable.Sum(System.Linq.ParallelQuery<decimal?>)' has some invalid arguments C:\Users\Piotr\Downloads\Magazynier (7)\Magazynier\Magazynier\Form1.cs 45 34 Magazynier
這
Error 3 Instance argument: cannot convert from 'System.Collections.Generic.IEnumerable<Magazynier.Model.Rozmiary>' to 'System.Linq.ParallelQuery<decimal?>' C:\Users\Piotr\Downloads\Magazynier (7)\Magazynier\Magazynier\Form1.cs 45 34 Magazynier
這
Error 4 The type arguments for method 'System.Linq.Enumerable.ToList<TSource>(System.Collections.Generic.IEnumerable<TSource>)' cannot be inferred from the usage. Try specifying the type arguments explicitly. C:\Users\Piotr\Downloads\Magazynier (7)\Magazynier\Magazynier\Form1.cs 47 43 Magazynier
和我的尺寸(又名Rozmiary )看起來像這樣在C#中
public enum NazwaRozmiaru
{
S,
M,
L,
}
public class Rozmiary : KlasaBazowa
{
public Produkty Produkt { get; set; }
public NazwaRozmiaru Nazwa { get; set; }
public int Ilosc { get; set; }
}
謝謝你,我會試試這個,讓你知道,如果這樣的作品! – johns
Upvoted的答案。小錯字:x.name ==「S」,即使對於M和XL大小。 –