C#Linq,对象定义不包含属性

时间:2015-03-26 09:18:24

标签: c# linq

我需要你的帮助

我刚写了以下代码

var anynomousObject = new { Amount = 10, weight = 20 };

List<object> ListOfAnynomous = new List<object> { anynomousObject };
var productQuery =
            from prod in ListOfAnynomous
            select new { prod.Amount, prod.weight }; // here it object on 'prod.Amount, prod.weight' that the object defenetion does not contains the "Amount" and "weight" properties

 foreach (var v in productQuery)
  {
    Console.WriteLine(v.Amount, v.weight);
  }

所以请你帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

您需要创建一个对象定义类,或者使用动态键工而不是装入对象:

 var anynomousObject = new { Amount = 10, weight = 20 };

 List<dynamic> ListOfAnynomous = new List<dynamic> { anynomousObject };
 var productQuery =
                    from prod in ListOfAnynomous
                    select new { prod.Amount, prod.weight }; 

 foreach (var v in productQuery)
 {
    Console.WriteLine(v.Amount, v.weight);
 }

这是因为,当您将对象作为对象时,编译器不知道您的匿名var的定义。动态使其在运行时而不是编译时进行评估。

另一种选择是创建一个类或结构。

答案 1 :(得分:1)

您的List<object>有一个object列表。 Linq查询查看此列表,它看到的只是常规object s。

使用类或结构来存储对象,或使用List<dynamic>