首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为字典列表创建dynamic?

如何为字典列表创建dynamic?
EN

Stack Overflow用户
提问于 2015-08-04 20:22:43
回答 1查看 952关注 0票数 1

我一直在使用dynamic来使用一个简单的Where子句过滤一个对象列表:

代码语言:javascript
复制
public class Employee
{
    public int Age = 0;
    public string FirstName = "";
}

var list1 = new List<Employee>();
for (int i = 0; i < 100; i++)
{
    list1.Add(new Employee()
    {
        Age = i,
        FirstName = "FirstName-" + i
    });
}
IQueryable<Employee> queryable1 = list1.AsQueryable();
IQueryable<Employee> result1 = queryable1.Where("Age==3");

上面的代码正在工作,但现在我必须对字典列表应用相同的逻辑:

代码语言:javascript
复制
public class EmployeeDictionary : Dictionary<string, object>
{

}

var list2 = new List<EmployeeDictionary>();
for (int i = 0; i < 100; i++)
{
    var employeeDictionary = new EmployeeDictionary();

    employeeDictionary["Age"] = i;
    employeeDictionary["FirstName"] = "FirstName-" + i;

    list2.Add(employeeDictionary);

}
IQueryable<EmployeeDictionary> queryable2 = list2.AsQueryable();
IQueryable<EmployeeDictionary> result2 = queryable2.Where("Age==3"); //ParseException raised!
IQueryable<EmployeeDictionary> result2 = queryable2.Where("Value.Age==3"); //ParseException raised!

我想肯定有一种方法可以告诉dynamic-linq应该如何转换列表项,但是我很难找到如何转换列表项。

更新

我以一个Employee类为例,以便每个人都能理解,但我之所以使用字典,是因为它将从动态sql查询生成的dataReader中填充。where子句也应该是动态的。

EN

回答 1

Stack Overflow用户

发布于 2015-08-04 20:26:18

只是根本不要使用dynamic,因为字典中已经有字段信息,字典不使用其键的静态查找。

代码语言:javascript
复制
IQueryable<EmployeeDictionary> result2 = queryable2
    .Where(dictionary => object.Equals(dictionary["Age"], 3));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31818603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档