![](/img/trans.png)
[英]C# Recursive method returning null reference, object reference not set to an instance of an object. XElement Objects
[英]handle null query c# when equals null, Object reference not set to an instance of an object
我在將 sql 轉換為查詢 c# 時遇到問題,這里是 sql 查詢
select mTeacher.Id as Id, mTeacher.Name as Name, mStudents.Name as Addresses
from Teachers mTeacher
left join Students mStudents
on mStudents.TeacherId=mTeacher.Id
where mStudents.Name = 'some of word'
這是我轉換為 sql 以查詢 c#
var zzz= from mTeacher in repo.Teachers
join mStudents in repo.mStudents on mTeacher.Id equals mStudents.TeacherId into a
from y1 in a.DefaultIfEmpty()
where mTeacher.Name.Equals("someofword") or mStudent.Name.Equals("somofword")
select new { mTeacher.Id,mTeacher.Name};
會有學生會有 null 值mStudent.Name.Equals("somofword")我得到了這樣的東西如何處理
如果我通過 SQL 查詢 go ,則您的 where 子句僅查找Student.Name
。
這必須不是 null (根據您的查詢)。 因此,我建議您僅使用內部聯接。 這也將解決您的 C# 轉換問題。
如果您仍想保留支票,則可以將 where 子句修改為:
where mTeacher.Name.Equals("someofword") or (mStudent != null && mStudent.Name.Equals("somofword"))
null 檢查將確保您不會遇到 object 是 null 錯誤(請記住,在左連接的情況下,學生值可以為空)。
如果您指的是學生表中的值,請在您的 select 子句中添加類似的 null 檢查。
select new { mTeacher.Id,mTeacher.Name, StudentName = ( y1 == null ) ? "No Student" : y1.Name};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.