我想知道如何使用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;
它不起作用,因为匿名类型编译器只能在编译时获取类型,我们如何处理这个,任何想法?
答案 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" }
};