c# - 将 LINQ 与包装数组一起使用

标签 c# arrays linq

我是 LINQ 的新手,我正在做一个简单的项目来学习该技术的特性。

目前我有一个静态类,它包装了一个对象数组(一种简单的工厂)。假设它看起来像下面这样:

public static class Factory
{
    private static Item[] items = new Item[]
    {
        // items are created here
    };

    // ...
}

现在我可以向我的工厂添加一些函数,以允许我查询内部数组,例如

    public static Item GetByID(ItemID id)
    {
        var query = 
            from item in items
            where item.ID == id
            select item;

        return query.First();
    }

但是,这需要我修改 Factory 类的内部结构。有没有办法从“外部世界”编写此类查询?

public class OtherClass
{
    var result = from it in Factory select ...
}

?

最佳答案

是的,你可以。只需在“外部世界”的工厂上使用 linq:

public class OtherClass
{
    public Item Get(ItemId id)
    {
       return Factory.Items.SingleOrDefault(i => i.ID == id);
    }
}

当然,为此,您需要将 items 数组的访问修饰符更改为 public

关于c# - 将 LINQ 与包装数组一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21564562/

相关文章:

c# - 尝试将非空字符串设置为类型 'System.Int32'

c# - 使用 C# 在其他人的 outlook 日历中创建约会

c++ - 异构数组实现

c# - LINQ to Entities 无法识别方法 'System.String Decrypt(System.String, System.String)' 方法

c# - 在 linq 或 lambda 表达式中转换匿名对象的类型

c# - 如何使用嵌套的 ObservableCollection 将数据 LINQ 到 ObservableCollection 中?

c# - 安装计时器作业时出现意外异常 - 无法从程序集创建接收器对象

C# - 在其他程序中编辑时实时更新 BackgroundImage

c++ - 按成员变量的字母顺序对指向对象的指针数组进行排序

c - 尝试将新值传递给指针数组