0

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

    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 框架是否可以进行这样的表达?

4

2 回答 2

2

我认为这样的事情会起作用:

List<Guid> identifiers = MyClass.AllMyClass.Where(x => x.ForeignKey == foreignKey).Select(x => x.Identifier).ToList();

此外,它们不是 .Net 2.0 中的 lambda 表达式。

于 2012-05-15T08:12:37.703 回答
1

MagicExpression通常称为Where.

而且,据我所知,.Net 2.0 中既没有 LINQ,也没有 lambda,也没有扩展方法;所以,第二个问题的答案可能是否定的。

于 2012-05-15T08:15:15.303 回答