簡體   English   中英

handle null query c# when equals null, Object reference not set to an instance of an object

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM