我经常发现自己需要从另一个项目列表的属性中编写项目列表。 我采取的方法通常类似于以下内容:
public class MyClass
{
public Guid Identifier { get; set; }
public byte[] Bytes { get; set; }
public int ForeignKey { get; set; }
public static List<MyClass> AllMyClass { get; }
}
private List<Guid> GetIdentifiers(int foreignKey)
{
List<Guid> identifiers = new List<Guid>();
foreach (var item in MyClass.AllMyClass.FindAll(c => c.ForeignKey == foreignKey)
{
identifiers.Add(item.Identifier);
}
return identifiers;
}
现在,有没有更快/更简单的方法来实现这个lamda表达式?同样,我想将操作浓缩成一行:
List<Guid> identifiers = MyClass.AllMyClass.MagicExpression(c => c.ForeignKey == foreignKey);
另外,对于.NET 2.0框架,表达是否可行?
答案 0 :(得分:2)
我认为类似的东西会奏效:
List<Guid> identifiers = MyClass.AllMyClass.Where(x => x.ForeignKey == foreignKey).Select(x => x.Identifier).ToList();
更重要的是,它们在.Net 2.0中没有lambda表达式。
答案 1 :(得分:1)
MagicExpression
通常称为Where
。
据我所知,.Net 2.0中既没有LINQ,也没有lambda,也没有扩展方法;所以,回答第二个问题可能是没有。