此代码:
var allSubjectsForAStudent = GetAllSubjects<Subject>(studentId);
返回
IEnumerable<Subject>
我可以在调试器中看到一堆主题。
想要检查特定主题是否进行不区分大小写的比较。
这是我的代码:
var studentSubjects = allSubjectsForAStudent.Where(s => s.Name.Equals(subjectName, StringComparison.CurrentCultureIgnoreCase));
'subjectName'是该方法将接收的参数。
当这一行执行时,我得到'对象未设置为对象的实例'错误。
所以我想做的是CASE INSENSITIVE搜索并在有多个时返回第一个项目,如果没有则返回空集合。
任何线索?
修改1
答案表明第一个集合中可能有一个可能有“空”的条目。虽然观察结果是正确的,但程序确保“主题名称”不能为空值。希望这会有所帮助。
提前致谢。
答案 0 :(得分:0)
你可以尝试:
datatable
这会将var studentSubjects = allSubjectsForAStudent.Where(s => !string.IsNullOrWhiteSpace(s.Name) && s.Name.ToUpperInvariant() == subjectName.ToUpperInvariant()).FirstOrDefault();
设置为null或匹配的studentSubjects
中的第一个实例。
您致电
时收到NullReferenceExceptionIEnumerable
表示s.Name为null的对象。
答案 1 :(得分:0)
它会:
if(allSubjectsForAStudent!=null && !string.IsNullorEmpty(subjectName))
var studentSubjects = allSubjectsForAStudent.Where(s => s.Name.Equals(subjectName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();