【发布时间】:2017-05-29 06:36:46
【问题描述】:
我有一个动态的对象列表,我使用 lambda 表达式 where 子句过滤项目。例如,只要考虑它有 3 个属性,foo、bar 和 baz
class item // let this be current class in dynamic item list
{
bool foo;
string bar;
string baz;
}
现在如果我想过滤 foo 为 false 的项目列表,我可以使用以下表达式
var filtered = itemList.Where("!foo");
我什至可以按字符串值过滤列表
var filtered = itemList.Where("bar==\"value\""); \\all items with bar = value
我要实际检查的是列表中的项目是否具有特定的字符串值,而不是空白的空值。我尝试了以下代码
var filtered = itemList.Where("!String.IsNullOrWhiteSpace(baz)");
报错了
'System.Func`2[DynamicType,System.Object]' 类型的表达式不能 用于方法“Boolean”的“System.String”类型参数 IsNullOrWhiteSpace(System.String)'
虽然我通过以下查询成功获得了结果
var filtered = itemList.Where("baz!=null && baz!=\"\"");
我想确认是否可以在此查询中使用String.IsNullOrWhiteSpace()。
【问题讨论】:
-
您正在更改字符串值,因此只需将字符串设为变量而不是硬编码。
-
@jdweng,对不起,我没听懂你在说什么。我只是想知道为什么
String.IsNullOrWhiteSpace()不起作用
标签: c# dynamic lambda dynamic-linq