我正在尝试根据子对象的条件过滤一组记录。编译好了
recordList = recordList.Where(r => r.Areas.Where(a => a.Area == "Z").Count() > 0);
但这不是
recordList = recordList.Where(r => r.Areas.Where(a => a.Area <= "Z").Count() > 0);
给出这些错误 无法将lambda表达式转换为类型'string',因为它不是委托类型 委托'System.Func'不带'1'参数 运算符'&lt; ='不能应用于'string'和'string'
类型的操作数!=工作正常,任何小于或大于操作失败。
答案 0 :(得分:2)
这与LINQ无关,不允许使用&lt; =,但是这些字符串无法与此运算符进行比较(但显然可以使用相等或不相等)。
在控制台应用中写这个:
string strA = "jamie";
string strB = "Z";
Console.WriteLine(strA != strB);
Console.WriteLine((bool)(strA <= strB));
用(基本上)相同的错误
强调最后一行无法对类型应用运算符'&lt; =' 'string'和'string'
现在,您可以在char
上使用&lt; =运算符,因此下面的类似代码会按预期编译并运行:
char charA = 'J';
char charB = 'Z';
Console.WriteLine(charA<=charB);
所以也许你想要的是:
recordList = recordList.Where(r => r.Areas.Where(a => a.Area[0] <= 'Z').Count() > 0);
HTH。
答案 1 :(得分:1)
运算符'&lt; ='不能应用于'string'和'string'类型的操作数
那就是它。要比较排序,而不是相等,请使用string.Compare
。
答案 2 :(得分:1)
你可以做&lt;和&gt;在字符上但不在字符串上;)使用String.Compare或者您可以编写自己的比较器来比较2个字符串。