gpt4 book ai didi

linq 迭代需要单行吗?

转载 作者:行者123 更新时间:2023-12-01 07:48:45 25 4
gpt4 key购买 nike

当我形成以下代码时

Rabbit[] rbt=
new Rabbit[]
{
new Rabbit{ Name="Jobby", Vegetable=new Vegetable{ VegiName="carrot"}},
new Rabbit{ Name="hobby", Vegetable=new Vegetable{ VegiName="Beetroot"}}
};

var s = from bt in rbt where
bt.Vegetable.VegiName.CompareTo("carrot") == 0 select bt;

foreach (var v in s)
{
Console.WriteLine("{0}{1}",v.Vegetable.VegiName,v.Name);
}

我的查询只返回单行,那么为什么我需要 foreach 迭代?我不能用吗
Console.WriteLine("{0}{1}",s.Vegetable.VegiName,s.Name); directly ?

最佳答案

编译器如何知道您的查询将只返回一行?
假设您更改了数据以包含另一个胡萝卜 - 或者根本没有胡萝卜 - 您希望发生什么。

如果您确实应该得到一个结果,请调用 Single为拿到它,为实现它。如果您可能会得到多个结果,请调用 First .如果您可能得到多个结果或没有结果,请调用 FirstOrDefault .如果您可能得到零个或一个结果,请调用 SingleOrDefault .例如,对于第一种情况:

var s = from bt in rbt where
bt.Vegetable.VegiName.CompareTo("carrot") == 0 select bt;

var veg = s.Single();

Console.WriteLine("{0}{1}",veg.Vegetable.VegiName,veg.Name);

或者:
var veg = rbt.Where(bt => bt.Vegetable.VegiName.CompareTo("carrot") == 0)
.Single();
Console.WriteLine("{0}{1}",veg.Vegetable.VegiName,veg.Name);

关于linq 迭代需要单行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com