【问题标题】:Trying to us an IList.Contains with lambda, but not delegate type试图给我们一个带有 lambda 的 IList.Contains,但不是委托类型
【发布时间】:2013-11-14 21:18:45
【问题描述】:

我正在尝试搜索列表并查看其中是否包含 ID。

            string idText = item["FCSID"].Text;
            var sfhOptions = PathologySFHByRole.GetSFHOptionsByRoles(Model.pathologyFishCultureStation);
            if (!sfhOptions.Contains(x => x.ID == int.Parse(idText))) 
                e.Item.Cells[0].Visible = false;

GetSFHOptionsByRoles 返回一个 IList。我的 lambda 表达式得到错误: 无法将 lambda 表达式转换为 SFHType 类型,因为它不是委托类型

这方面的最佳做法是什么?

【问题讨论】:

  • 改用Any!sfhOptions.Any(x => x.ID == int.Parse(idText))

标签: linq lambda ilist


【解决方案1】:

你可以使用Any:

int id = int.Parse(idText);
e.Item.Cells[0].Visible = sfhOptions.Any(x => x.ID == id);

IList<T>.Contains 需要 SFHType 类型的对象,而不是谓词。

【讨论】:

  • 也许,当您使用它时,您想先将idText 转换为数字。我不确定每次调用委托时都会解析它,但我可以想象它会。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
相关资源
最近更新 更多