![](/img/trans.png)
[英]How to simplify the initialization of List<List<Int32>> as IEnumerable<IEnumerable<Int32>>?
[英]How do you convert IEnumerable<int> to an Int32
我有一个linq查询将返回1个结果,这将是一个整数。 我想将它分配给一个Int32变量以便稍后使用,但是我得到一个错误,它读取“int不包含RatingNumber的定义而且没有扩展方法可以找到类型为int的第一个参数的RatingNumber(你是否遗漏了) using指令或程序集引用?)
这是调用查询的代码
IEnumerable<int> newRatingNumber = getNewRecipeNumbers.newRatingNum();
foreach (var a in newRatingNumber)
{
ratingNumber = a.RatingNum;
}
这是查询:
public IEnumerable<int> newRatingNum()
{
ratingTableAdapter.Fill(recipeDataSet.Rating);
var newRatingNum = (from a in recipeDataSet.Rating
where a.UserRating == 0 &&
a.FamilyRating == 0 &&
a.HealthRating == 0 &&
a.EaseOfCooking == 0 &&
a.CookingTime == 0
select a.RatingNum);
return newRatingNum;
}
我尝试使用Convert.ToInt32将结果转换为int,这消除了编译错误,但是这创建了一个InvalidCastException。 有人有主意吗?
谢谢您的帮助
克雷格
Linq查询的结果不是单个Int值,而是IEnumerable。 因此,您需要从中获取单个值,在您的情况下,这是第一个值:
var newRatingNum = (from a in recipeDataSet.Rating
where a.UserRating == 0 &&
a.FamilyRating == 0 &&
a.HealthRating == 0 &&
a.EaseOfCooking == 0 &&
a.CookingTime == 0
select a.RatingNum).FirstOrDefault();
FirstOrDefault()
将返回FirstOrDefault()
的第一个值,如果Enumberable为空,则返回0。
如果你有一个List<Int32>
,理论上你有多个。 您可以使用First()
, Last()
或Single()
从该列表中提取单个元素。 它们都有OrDefault()
版本,如果列表为空则返回0 - 否则它们会出错。
你不能使用Single或First方法隔离单个Int32吗? 当你需要时,IEnumerable隐含很多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.