linq查询匿名类型

时间:2014-02-19 15:58:09

标签: c# linq

我想知道如何使用linq查询匿名类型的arraylist

我有一个匿名类型的arraylist

 var pairs = new ArrayList() { new { id = 1, name = "ram" },` new { id = 2, name = "ramesh" } };

我希望有一些工作如下

    var query = from stud in pairs
                where stud.id==1
                select stud;

它不起作用,因为匿名类型编译器只能在编译时获取类型,我们如何处理这个,任何想法?

2 个答案:

答案 0 :(得分:7)

ArrayList是.Net的一个非常古老的部分 - 避免使用它。如果您使用匿名数组,一切都会起作用:

var pairs = new [] { new { id = 1, name = "ram" }, new { id = 2, name = "ramesh" } };
var query = from stud in pairs
            where stud.id == 1
            select stud;

答案 1 :(得分:4)

您可以使用dynamic类型在运行时解析类型:

   var query = from dynamic stud in pairs
               where stud.id == 1
               select stud;

注意:我建议你使用泛型集合,或者更好的事件 - 创建一个很好的命名类来保存你的数据。假设它应该看起来像

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
}

然后创建学生列表并查询此列表

var students = new List<Student> {
      new Student { Id = 1, Name = "ram" },
      new Student { Id = 2, Name = "ramesh" }
    };