为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
噜噜哒 2022-08-20 16:07:43
我正在尝试编写一个查询以从数据库中选择数据。我有以下代码: 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,如果它们具有值?
查看完整描述

2 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

创建条件查询:


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();


查看完整回答
反对 回复 2022-08-20
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

很简单,只需添加一个 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()


查看完整回答
反对 回复 2022-08-20
  • 2 回答
  • 0 关注
  • 230 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信