有没有人能帮我:
我有一个具有动态(ExpandoObject)属性的poco对象集合,它需要是动态linq中字符串条件的一部分
例如。
public class Test
{
public int Id {get;set;}
dynamic DynamicProperty {get;set;}
}动态属性(ExpandoObject)具有属性(Id和Name)
如何使用动态Linq过滤Test对象的集合(字符串where条件应该是什么样子的?):
IList<Test> testList;
testList.AsQueryable()
.Where("DynamicProperty.Id == 2 or DynamicProperty.Name == "test"")发布于 2013-03-25 23:32:00
Dynamic LINQ 提供了一个小的可重用的库,它支持字符串谓词(和查询语言)来构建动态LINQ语句。
Download Link
发布于 2013-03-25 23:57:36
链接同一IQueryable上的Wheres,以构建一个完整的表达式树,然后可以使用ToList来实现:
IList<string> testList = new List<string>() {"One", "Two", "Three", "Four", "Five"};
var filteredList = testList.AsQueryable().Where((s) => s.Length <= 4);
filteredList = filteredList.Where((s) => s[0].Equals('F'));
var results = filteredList.ToList();发布于 2013-03-26 05:26:47
感谢各位,但我的where条件必须是一个字符串,它将在动态where子句中使用,就像我发布的示例一样。复杂属性(DynamicProperty)是未知类型,必须在筛选器中使用,如示例所示。我使用了ExpandoObject,但是上面的语法(.Where("DynamicProperty.Id == 2 or DynamicProperty.Name == "test""))有问题。因为字符串结构必须类似于这个.Where("DynamicProperty["Id"] == 2 or DynamicProperty["Name"] == "test"")),并且因为Expando具有IDictionary<string, object>结构,所以所有值都必须显式转换,最终的过滤器是:.Where(Convert.ToInt32("DynamicProperty["Id"]) == 2 or DynamicProperty["Name"].ToString() == "test"")),它比第一个过滤器更复杂。
如何解决像上面这样的字符串过滤器问题
"DynamicProperty.Id == 2 or DynamicProperty.Name == "test""https://stackoverflow.com/questions/15613234
复制相似问题