【问题标题】:Linq selectmany issueLinq 多选问题
【发布时间】:2017-07-17 10:29:30
【问题描述】:

我在选择这个选项时遇到了一些问题

var pAssets = sPallets.SelectMany(p => 
       AsyncHelper.RunSync(() => assetRepository.GetByPalletAsync(p.Id))).ToArray();

我必须添加一个 where 条件,例如 pAsset.isEnabled == true

所以我尝试了

var pAssets = sPallets.SelectMany(p => 
    AsyncHelper.RunSync(() => _assetRepository.GetByPalletAsync(p.Id)))
    .where(p => isEnabled==true).ToArray();

还有

var pAssets = sPallets.SelectMany(p => 
    AsyncHelper.RunSync(() => _assetRepository.GetByPalletAsync(p.Id)))
   .where(p => p.isEnabled==true).ToArray();

但我收到以下错误:

pAssets 不包含定义且未找到扩展方法

我的 pAsset 类是:

public class Pallet : Entity<string>
{
    public string PalletNumber { get; private set; }
    public string PalletStatusName { get; private set; }
    public DateTimeOffset? CloseDate { get; private set; }
    public string Location { get; set; }
    public bool isEnabled { get; set; }
}

【问题讨论】:

  • _assetRepository.GetByPalletAsync(p.Id)的返回类型是什么?

标签: c# linq lambda where


【解决方案1】:
 sPallets.Where(x=>x.isEnabled == true).SelectMany()

你需要使用上面的代码。

【讨论】:

  • 可能只是缩短为sPallets.Where(x=&gt; x.isEnabled).SelectMany()
  • @VijayRaheja 是的,它会起作用,但他的意思是没有必要做 IsEnabled == true。这是多余的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
相关资源
最近更新 更多