实体框架上下文中的条件WHERE子句

时间:2018-06-13 15:51:57

标签: entity-framework entity-framework-core

objRecord = await _context.Persons
    .Where(tbl => tbl.DeletedFlag == false)
    .ToListAsync();

这是我已成功获取Person表中DeletedFlag为假的所有记录的EF代码。

我想添加另一个标准,如果传入了姓氏,那么添加额外的where子句

.Where(tbl => tbl.Surname.Contains(theSurname))

我已尝试过IQueryable和其他一些选项,但无法弄清楚如何做等效的

string theSurname = "";
objRecord = await _context.Persons
    .Where(tbl => tbl.DeletedFlag == false)
    if ( theSurname != "") {
        .Where(tbl => tbl.Surname.Contains(theSurname))
    }
    .ToListAsync();

显然无法正常工作,因为您无法在EF调用中添加if语句。

我之后可以添加一个限制objRecord的标准,但我不想检索所有记录,然后将其删除,我只想获取我需要的记录。

2 个答案:

答案 0 :(得分:2)

您只需添加<form id="Form1" defaultbutton="SubmitButton" defaultfocus="TextBox1" runat="server"> 即可在Where方法中合并条件,以便最终查询如下所示:

tbl.Surname.Contains(theSurname)

答案 1 :(得分:1)

您必须对Where子句中的现有条件应用逻辑AND(&&),即tbl.Surname.Contains(theSurname);

所以你的查询将是

.Where(tbl => tbl.DeletedFlag == false && tbl.Surname.Contains(theSurname));