【问题标题】:Correct way to write a LINQ or Lambda to retrieve items with a matching supplier ID编写 LINQ 或 Lambda 以检索具有匹配供应商 ID 的项目的正确方法
【发布时间】:2011-11-07 14:03:43
【问题描述】:

给定以下类

产品
- 整数产品ID
- 供应商[] 供应商
...

供应商
- int 供应商ID
- 字符串供应商名称
...

如果我有一个包含 1000 个产品的数组,并且每个产品可以包含多个供应商,我将如何从 Products 数组中获取供应商 ID [X]?

【问题讨论】:

    标签: c# linq lambda


    【解决方案1】:
    var suppliers = 
        from product in products
        from supplier in product.Suppliers
        where supplier.SupplierID == X
        select supplier;
    

    或者使用等效的扩展方法:

    var suppliers = 
        products.SelectMany(p => p.Suppliers).Where(s => s.SupplierID == X);
    

    【讨论】:

    • 你可能想在它周围添加一个 Distinct。
    • 如果供应商有不同的SupplierId,您可能只想在扩展方法中将Where() 更改为Single()
    • 您可能需要调用 .ToList()(或 .ToArray,或将供应商设为 List),以获得热切的评估。特别是(可能......)如果您正在处理外部数据源并合并连接等
    猜你喜欢
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多