我有一個簡單的串列,我想按照它是哪個類別的成員來顯示。我所看到的所有示例都使用了GroupBy,但只使用了一個ID,我很難弄清楚如何在List中這樣做。 如果產品同時出現在兩個類別下就可以了。
public class Product
{
public int Id { get; set; }
public string Title { get; set; }
public List<Category> Categories { get; set; }
}
StringBuilder ProductList = new StringBuilder()。
var p = _products.GroupBy(a => a.Categories);
foreach (var item in p)
{
ProductList.Append($"<p><strong>{item.Key}</strong><br/>") 。
foreach (var e in item)
{
ProductList.Append($"{e.Title}") 。
ProductList.Append("</p>"/span>)。
}
}
uj5u.com熱心網友回復:
下面是一個帶有樣本資料的解決方案,你可以自己測驗一下:
var categories = Enumerable. Range(0, 10).Select(n => new Category { Id = n }).ToArray();
var products = new[ ] 。
{
new Product { Id = 1, Title = "P1", Categories = new List< Category> { categories[0], categories[1], categories[2] }. },
new Product { Id = 2, Title = "P2"/span>, Categories = new List< Category> { categories[0], categories[1], categories[3] }. },
new Product { Id = 3, Title = "P3", Categories = new List< Category> { categories[0], categories[2], categories[3] }. },
new Product { Id = 4, Title = "P4", Categories = new List< Category> { categories[0], categories[2], categories[3] }. },
new Product { Id = 5, Title = "P5", Categories = new List< Category> { categories[0], categories[3], categories[5] }. },
new Product { Id = 6, Title = "P6", Categories = new List< Category> { categories[0], categories[4], categories[5] }. },
};
var categoryGroups =
from p in products
from c in p.Categories
group p by c.Id into g
select g;
foreach (var categoryGroup in categoryGroups)
{
Console.WriteLine($"Category {categoryGroup.Key}:")。
foreach (var product in categoryGroup)
{
Console.WriteLine($" Product {product.Id}: {product.Title}")。)
}
Console.WriteLine("-----------------------------------------------------");
}
我假設類Category有一些id屬性,例如Id,來進行分組。如果它是基于參考的分組,你可以用group p by c.Id into g代替group p by c into g。
uj5u.com熱心網友回復:
你可以使用SelectMany將串列扁平化為(Product, Category)的圖元,然后使用GroupBy將產品按類別分組。
StringBuilder ProductList = newStringBuilder()。
var p = _products
.SelectMany(a => a.Categories, (prod, cat) => (prod, cat))
.GroupBy(tuple => tuple.cat, tuple => tuple.prod)。
foreach (var item in p)
{
ProductList.Append($"<p><strong>{item.Key}</strong><br/>") 。
foreach (var e in item)
{
ProductList.Append(e.Title)。
ProductList.Append("</p>") 。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/310107.html
標籤:
