【问题标题】:How can i use LINQ with property我如何将 LINQ 与属性一起使用
【发布时间】:2011-05-06 14:17:56
【问题描述】:

您好,如果类型为“DtContract”,我有一个数组列表。

ArrayList listOfContracts_;

foreach (DTContract contract in listOfContracts_)
{
    if (contract.Engine != DTIsland.EngineType.AMADEUS && contract.Engine !=DTIsland.EngineType.SABRE)
                    continue; 
}

我想通过 LINQ 来实现。 我想过滤其EngineType == AMADEUS && EngineType == SABRE 的合约。请建议我如何通过 Linq 完成并在列表或数组列表中获取结果。

我这样做是为了优化代码。

请帮忙...

【问题讨论】:

  • 您想优化速度还是提高可读性?因为将此foreach 循环转换为Linq 查询不会提高速度。
  • @Elian : 那么我该如何改进呢?请建议..
  • 您的代码中缺少构造函数调用和listOfContracts_.add(contract)。 Elian ment 是什么,linq 将在内部执行与您当前所做的相同的操作,并且从性能的角度来看,没有什么可优化的)。
  • @Nappy:实际上这只是一个例子,所以我不写 listOfContracts_.add(contract)

标签: linq lambda linq-to-entities linq-to-objects


【解决方案1】:
var result = listOfContracts_.Where(contract=>contract.Engine != DTIsland.EngineType.AMADEUS && contract.Engine !=DTIsland.EngineType.SABRE).ToList();

【讨论】:

    【解决方案2】:

    你的 foreach 循环没有做任何有意义的事情,你想要实现什么?

    如果你想使用 linq

    listOfContracts_.OfType<DTContract>()
       .Where(contract => contract.Engine != DTIsland.EngineType.AMADEUS && 
                          contract.Engine != DTIsland.EngineType.SABRE);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      相关资源
      最近更新 更多