LINQ Select n list ASP.净的核心



我有这样的代码:

foreach(var i in category.count)
{
var getDifferentSerialNumberforEachLoop = _db.Category.Where(a => a.CategoryID == 
categoryID).Select(i=>i.SerialNumber).FirstOrDefault();
//Proceed to do something else with the first serial number value
.....
///end of the first serial number being processed, do again n times (number of categry.count 
times)
}

所以你有一个情况,一个CategoryID可以有许多与它相关联的serialnumber,例子:

CategoryID     SerialNumber
12345          0123445
12345          2345678
12345          0987654
12345          8756478
....           ......(n times)

我想循环并获取每个序列号并保存到变量,'getDifferentSerialNumberforEachLoop'单独处理并再次执行与该CategoryID关联的所有序列号。但目前我只得到第一个SerialNumber说0123445当然,这是因为我使用'FirstOrDefault()',所以即使Select(I => i.s SerialNumber)值每次改变它通过类别循环。计数变量,getDifferentSerialNumberforEachLoop将始终是第一个默认值。

我的问题是:我如何使getDifferentSerialNumberforEachLoop始终具有下一个SerialNumber值?

我不能使用.Take(4),因为我不知道category.count是否总是4 -如果这有意义吗?

不能使用LastOrDefault,因为我不能得到第一个到最后一个值,我不能使用List(),因为我一次只需要一个SerialNumber的值。

有什么办法可以解决这个问题吗?我也看过Takewhile,但不确定?还有其他问题吗?谢谢你。

我建议这样做。

foreach(var i in category.count)
{
var getDifferentSerialNumberforEachLoop = _db.Category.Where(a => a.CategoryID == 
categoryID).Select(i=>i.SerialNumber).ToList().ForEach(serialNo => {
Console.WriteLine(serialNo);
});
}

您说"不能使用List,因为一次只需要一个序列号";但是执行ToList()ForEach将允许您一次遍历每个序列号。

相关内容

  • 没有找到相关文章

最新更新