C# 如何使用LINQ中的多个where子句获取自定义对象集合中特定属性参数的值?

C# 如何使用LINQ中的多个where子句获取自定义对象集合中特定属性参数的值?,c#,linq,C#,Linq,我有以下清单: List<Product> productList = new List<Product> { new Product(){ Name = "C", OriginYear=1992,DevelopementYear=1992,IValue=110}, new Product(){ Name = "C", OriginYear=1992,DevelopementYear=1993,IValue=170}, ne

我有以下清单:

List<Product> productList = new List<Product>
      {
      new Product(){ Name = "C", OriginYear=1992,DevelopementYear=1992,IValue=110},
      new Product(){ Name = "C", OriginYear=1992,DevelopementYear=1993,IValue=170},
      new Product(){ Name = "C", OriginYear=1993,DevelopementYear=1993,IValue=200},
      new Product(){ Name = "NC", OriginYear=1990,DevelopementYear=1990,IValue=45.2M},
      new Product(){ Name = "NC", OriginYear=1990,DevelopementYear=1991,IValue=64.8M},
      new Product(){ Name = "NC", OriginYear=1990,DevelopementYear=1993,IValue=37.0M},
      new Product(){ Name = "NC", OriginYear=1991,DevelopementYear=1991,IValue=50},
      new Product(){ Name = "NC", OriginYear=1991,DevelopementYear=1992,IValue=75},
      new Product(){ Name = "NC", OriginYear=1991,DevelopementYear=1993,IValue=25},
      new Product(){ Name = "NC", OriginYear=1992,DevelopementYear=1992,IValue=55},
      new Product(){ Name = "NC", OriginYear=1992,DevelopementYear=1993,IValue=85},
      new Product(){ Name = "NC", OriginYear=1993,DevelopementYear=1993,IValue=100}
      };
它返回0。 但是,如果我检查:

  new System.Linq.SystemCore_EnumerableDebugView<decimal>(temp).Items[0]
new System.Linq.SystemCore\u EnumerableDebugView(temp).Items[0]
它给出了期望的值 我可以知道发生了什么吗?我如何改进查询


提前感谢。

选择返回一个
IEnumerable
,您可以使用foreach对其进行迭代

var temp = productList.Where(p => p.Name == "C" && p.OriginYear == 1992 && p.DevelopementYear == 1992).Select(p => p.IValue);

foreach(var t in temp)
{
    Console.WriteLine(t);
}
或者,如果希望通过使用索引值访问单个元素,可以从中创建列表或数组对象

var temp = productList.Where(p => p.Name == "C" && p.OriginYear == 1992 && p.DevelopementYear == 1992).Select(p => p.IValue).ToArray();

Console.WriteLine(temp[0]);

您发布的查询将返回一个包含单个元素的序列,其中该元素为
110
。不清楚您所说的“its[sic]返回0”是什么意思,也不清楚您为什么认为应该得到一个值为
170
的元素。如果您想要答案,请修复您的问题,使其包含一个可靠地再现问题的好的。是的,我的意思是110。返回0意味着我得到的temp=0的值。我基本上需要得到110的值。假设
Product
类只存储
IValue
的指定值,您上面发布的代码就会这样做。所以,复制并粘贴您实际使用的代码。如果你隐瞒了相关细节,没有人能帮你。
var temp = productList.Where(p => p.Name == "C" && p.OriginYear == 1992 && p.DevelopementYear == 1992).Select(p => p.IValue).ToArray();

Console.WriteLine(temp[0]);