LINQ 条件查询,其中值可能为空

我正在尝试编写一个查询以从数据库中选择数据。我有以下代码:


 from notes in ctx.Notes

 .Where(x => x.UserId== user.UserId 

 || x.UserId == user.FamilyId 

 || x.UserId == user.CompanyId).DefaultIfEmpty()

这样做的问题是,FamilyId 和 CompanyId 都是可为 null 的类型,可能根本没有任何损坏整个查询的值。我该如何重写它,以便它只查找FamilyId/CompanyId,如果它们具有值?


噜噜哒
浏览 231回答 2
2回答

一只甜甜圈

创建条件查询:var users = ctx.Notes.Where(x => x.UserId == user.UserId);if (user.FamilyId != null){    users = users.Union(ctx.Notes.Where(x => x.UserId == user.FamilyId));}if (user.CompanyId != null){    users = users.Union(ctx.Notes.Where(x => x.UserId == user.CompanyId ));}var result = users.ToArray();

潇潇雨雨

很简单,只需添加一个 AND 子句来检查它是否不为 null: from notes in ctx.Notes.Where(x => x.UserId== user.UserId || (user.FamilyId ! =null && x.UserId == user.FamilyId) || (user.CompanyId !=null && x.UserId == user.CompanyId)).DefaultIfEmpty()
打开App,查看更多内容
随时随地看视频慕课网APP