除了previous question之外,我仍然没有解决问题的具体方法。
我有2个这样的课程:
public class Product
{
public Product()
{
Options = new List<Option>();
}
public string Name { get; set; }
public int ID { get; set; }
public List<Option> Options { get; set; }
}
public class Option
{
public int SubID { get; set; }
public string SubName { get; set; }
public int ListBoxID { get; set; }
public decimal Price { get; set; }
public bool IsSelected { get; set; }
}
在这样的列表中使用的是:
List<Product> Products { get; set; }
当用户选择左侧的产品(总是具有相同的属性)时,它的内部List<Optie>
将被加载到4个不同的ListBox's
中,过滤为{{1 }}
现在,如果用户在2个产品中选择相同的选项,如何使用linq将它们转换为一个结果?
e.g。加载了4个相同的产品,用户为2个产品选择相同的选项,然后我的结果将是:
ListBoxID
如果其他2个产品有不同的选择,这些可能是他们的结果:
2x Product
2x lookbrood
2x ollema
2x fitness broodje
2x testtest
我总是需要加载到2x Product
2x ciabatta broodje
2x ollema
2x slagroom
2x smos
的数量:
例如:装载了6种产品,然后我的组合可以是:
Products
3x Product
3x ciabatta broodje
3x ollema
3x slagroom
3x smos
或
3x Product
3x Some other option 1
3x Some other option 2
3x Some other option 3
3x Some other option 4
2x Product
2x Some option 1
2x Some option 2
2x Some option 3
2x Some option 4
2x Product
2x Some other option 1
2x Some other option 2
2x Some other option 3
2x Some other option 4
这是我能给出的最佳解释,我希望图片有所帮助。
答案 0 :(得分:2)
您在寻找GroupBy
吗?这会将具有相同ID的Optie
分组,并为您提供它们的编号。
Product.Opties
.GroupBy(x => new {
x.ListBoxID, x.Naam
})
.Select(x =>
new {
ListBoxID = x.Key.ListBoxID,
Naam = x.Key.Naam,
Count = x.Count()
})