执行以下linq时,我得到以下异常:
"序列不包含任何元素"
Linq代码:
newGradeRow[rowCnt + 1 + "Grade " + ExamName] =
objDataSet.Tables[1].Rows.Cast<DataRow>()
.Where(p => Convert.ToDecimal(p["EMG_MARKS_ABOVE"]) <= extSubMarks
&& extSubMarks <= Convert.ToDecimal(p["EMG_MARKS_BELOW"]))
.Select(p => Convert.ToString(p["EMG_GRADE_NAME"]))
.First();
Run Code Online (Sandbox Code Playgroud)
谁可以帮我这个事?
dan*_*oid 48
First如果序列为空,则在方法调用中抛出异常,如文档中所述.在这种情况下,最好使用FirstOrDefault方法 - 它将返回默认值(在特定情况下null)并且不会抛出任何异常.
首先要分解它.您当前的代码没有为调试器提供任何控制.
var r1 = objDataSet.Tables[1].Rows;
var r2 = r1.Cast<DataRow>();
System.Diagnostics.Debug.Print("r2: {0}", r2.Count());
var r3 = r2.Where(p => Convert.ToDecimal(p["EMG_MARKS_ABOVE"]) <= extSubMarks
&& extSubMarks <= Convert.ToDecimal(p["EMG_MARKS_BELOW"]));
System.Diagnostics.Debug.Print("r3: {0}", r3.Count());
var r4 = r3.Select(p => Convert.ToString(p["EMG_GRADE_NAME"]));
var r5 = r4.First();
newGradeRow[rowCnt + 1 + "Grade " + ExamName] = r5;
Run Code Online (Sandbox Code Playgroud)
objDataSet.Tables[1]是空的?
也许数据在objDataSet.Tables[0]?
无论哪种方式,你都可以测试objDataSet.Tables.Count() > 0
您可以对行执行相同的操作:objDataSet.Tables[1].Rows.Count() > 0
| 归档时间: |
|
| 查看次数: |
55158 次 |
| 最近记录: |