Lambda表达式从其他类型的属性中获取类型列表

时间:2012-05-15 08:08:10

标签: c# lambda

我经常发现自己需要从另一个项目列表的属性中编写项目列表。 我采取的方法通常类似于以下内容:

    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框架,表达是否可行?

2 个答案:

答案 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,也没有扩展方法;所以,回答第二个问题可能是没有。