LINQ Any()参数与参数数据类型问题

时间:2011-07-28 15:44:21

标签: c# linq

我有一个带有字符串类型参数的对象,名为“ baan_cat_fam_code ”。下面的代码是我尝试查找查询中具有 baan_cat_fam_code 的所有项目,这些项目存在于名为 catFamCd 的通用字符串列表中。

query = query.Where(r => r.baan_cat_family_code.Any(s => catFamCode.Contains(s)));

问题是这不会编译 - 我收到一个说明

的错误
"Argument type 'char' is not assignable to parameter type 'string'"

由于某种原因,谓词 s 被输入为char。所以我将 .ToString()附加到 .Contains 方法中的参数。但是,当代码运行时,当查询结果绑定到列表框时,我会抛出以下异常。

"The argument 'value' was the wrong type. Expected 'System.Char'. Actual 'System.String'."

这让我摸不着头脑。非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:13)

您遇到的问题是baan_cat_family_code类型string实现了IEnumerable<char>。当你致电Any时,它基本上是在说

  • char
  • 中的任何string的谓词是否为真

你真正想要问的是

  • 列表string
  • 中的catFamCode

尝试以下后者

query = query.Where(r => catFamCode.Contains(r.baan_cat_family_code));

答案 1 :(得分:2)

你在一个字符串上调用Any(),该字符串查看其chars的元素,因此出错。

你应该做的:

query = query.Where(r => catFamCode.Contains(r.baan_cat_family_code));