我有以下课程:
public class A
{
public List<object> MyItems { get; set; }
public Color Color { get; set; }
public object MyItem { get set; }
}
A的每个实例都可以有 n MyItems。
给定一个A列表,我需要按颜色过滤它们,并创建一个新列表,其中为MyItems集合的每个元素创建一个新的A实例。
List<A> Aitems = originalItems.Where(b => b.color == color)
.Select(b=>
{
A aItem = b;
// Problem below. Is there a way to create more
// aItems for every object in MyItems collection?
b.MyItem = b.MyItems[0];
return aItem;
}).ToList();
有没有办法使用LINQ为MyItems集合中的每个对象创建更多的aItems,还是应该使用标准的foreach?
答案 0 :(得分:1)
你在找这样的东西吗?
var query = from b in originalItems
where b.Color == color
from item in b.MyItems
select new A
{
MyItems = b.MyItems,
Color = b.Color,
MyItem = item,
};
var result = query.ToList();
答案 1 :(得分:1)
假设您要为具有特定颜色的对象MyItems
中的每个项目创建新的A,您可以这样做:
from a in originalItems
where a.color == color
from myItem in a.MyItems
select new A { /* not sure what you want here */ }
答案 2 :(得分:0)
这将为您提供原始项目中所有MyItem的列表,其中它是您想要的颜色:
var items = (from a in OriginalItems
where a.Color == color
from item in a.MyItems
select item).ToList();