我需要你的帮助
我刚写了以下代码
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);
}
所以请你帮我解决这个问题。
答案 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>