Linq To Object 序列不包含任何元素的问题,求救
主要代码如下:public static List<List<MyCoalLoadOptimizeValue>> coalLoadOptimizeList_Temp = new List<List<MyCoalLoadOptimizeValue>>();
coalLoadOptimizeList_Temp = coalLoadOptimizeList_Temp.Where(c => Convert.ToDecimal(c.Where(d => d.pointNum == pointList[pointcount - MMJCount + i].PointName).First().optimizeValue) > MMJMinValue[i]).ToList();
当运行到第二行时,报“序列不包含任何元素”,且报错时显示,c.Count=0;
还有一点是,在我自己电脑(window7)上运行ok,在另一台电脑上(window server8 R2)出现该问题
请各位朋友帮忙分析下问题原因,谢谢! linq C# --------------------编程问答-------------------- First()前面的那个查询一个元素也没有找到。 --------------------编程问答--------------------
版主,这个我明白,关键是,c.Count=0这个问题,c.Count应该是大于零的 --------------------编程问答-------------------- Where(c => Convert.ToDecimal(c.Where(d => d.pointNum == pointList[pointcount - MMJCount + i].PointName)
这个条件一定有才First;不然就使用FirstOrDefault()
不为null再继续~where --------------------编程问答--------------------
谢谢您的回复,但我感觉我的这个问题不是First的问题,因为实际数据是可以满足条件的,而且只是在部分机器上运行有这个问题 --------------------编程问答-------------------- 从你的代码来看,应该是在一个for循环里?
c.Count 写在哪里的 --------------------编程问答-------------------- 上出错行代码 --------------------编程问答--------------------
coalLoadOptimizeList_Temp = coalLoadOptimizeList_Temp.Where(c => Convert.ToDecimal(c.Where(d => d.pointNum == pointList[pointcount - MMJCount + i].PointName).First().optimizeValue) > MMJMinValue[i]).ToList();
标红的c.Count=0,实际应该未1000多,这行代码包含两层Where,内层Where是对c的筛选 --------------------编程问答-------------------- i是哪来的? for循环里?
因为你用的是非延迟查询(.ToList()可看出来),所以第一次没有找到符合条件的结果,导致=号右侧为空
然后又直接付值给了coalLoadOptimizeList_Temp
所以c.Count肯定是0了 --------------------编程问答--------------------
这个挺有道理的,i是在for循环里,那要怎么解决呢,代码如下:
for (int i = 0; i < MMJCount; i++)
{
if (_mmjRunningState[i] == '1')
{
coalLoadOptimizeList_Temp = coalLoadOptimizeList_Temp.Where(c => Convert.ToDecimal(c.Where(d => d.pointNum == pointList[pointcount - MMJCount + i].testPointName).First().optimizeValue) > MMJMinValue[i]).ToList();
}
else
{
coalLoadOptimizeList_Temp = coalLoadOptimizeList_Temp.Where(c => Convert.ToDecimal(c.Where(d => d.pointNum == pointList[pointcount - MMJCount + i].testPointName).First().optimizeValue) <= MMJMinValue[i]).ToList();
}
}
补充:.NET技术 , LINQ