我有一个班级持有Color
和一个字符串:
public class Magic{
public string Name {get; set;}
public Color MyColor {get; set;}
}
我有一份清单:
List<Magic> MyList = new List<Magic>();
我对LINQ没有太多经验,我想知道如何将Color
中的所有List
个对象转换为List
s的新Color
答案 0 :(得分:6)
您可以使用Select方法:
List<Color> magicColors = MyList
.Select(magic => magic.MyColor)
.ToList();
如果您只想要唯一颜色:
List<Color> magicColors = MyList
.Select(magic => magic.MyColor)
.Distinct()
.ToList();
我们的想法是,对于每个Magic
,它都会提取MyColor
。这就是Select(magic => magic.MyColor)
的作用。
答案 1 :(得分:1)
问题有点模糊,如果你正在寻找颜色投影,那么@ChrisSinclair答案是正确的。
另一方面,如果您想按颜色过滤,那么您可以这样做:
var magicS = (from magic in MyList where magic.MyColor == s select magic).ToList();
或
var magicS = MyList.Where(m => m.MyColor == s).ToList();
答案 2 :(得分:0)
我使用了.FindAll方法。
var lst = GetAllProducts();
List<ProductModel> sel = lst.FindAll(x => x.IsActive == true);
return sel;
我有一种方法可以将所有产品放入List&lt;&gt;中。我的产品模型有一个名为IsActive(一个布尔值)的属性。
此代码会创建一个新的List&lt;&gt;只有Active = True产品。