我有这样的代码:
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
将允许您一次遍历每个序列号。