查询表的 Linq 扩展方法

Ahm*_*med 0 c# linq extension-methods

我有一个如下所示的表(它是一个审计表,包含来自不同表的数据)和其他一些列:我试图从审计表中获取所有值,其中表名列包含具有 top 且 EntiryId 为 1007 的表和通知栏

Table Name      EntityId
    AllTOP      1007
ProductTOP      1007
ProductTOP      1008
ProductTOP      1007
UserRoleTOP     1007
UserRoleTOP     1008
UserRoleTOP     1007
RequestTypeTOP  1007
Notifications   1014
Notifications   1015
Notifications   1016
Run Code Online (Sandbox Code Playgroud)

我试过如下:

var logList = _dbcontext.Audits.Where(e => e.TableName.Contains("TOP") && e.EntityId == 1007.ToString()).ToList()
Run Code Online (Sandbox Code Playgroud)

此查询为我提供了包含 top 的值的结果,但是当我尝试添加另一个条件以从通知中获取所有值时,我收到“枚举未返回结果”。这是我的尝试

var logList = _dbcontext.Audits.Where(e => e.TableName.Contains("TOP") && e.EntityId == 1007.ToString() && e.TableName.Contains("Notifications")).ToList()
Run Code Online (Sandbox Code Playgroud)

我的错误是什么?

Sia*_*ash 5

你可能正在寻找这个:

var logList = _dbcontext.Audits
  .Where(e => (e.TableName.Contains("TOP") || e.TableName.Contains("Notifications")) 
  && e.EntityId == 1007.ToString()).ToList()
Run Code Online (Sandbox Code Playgroud)

列名应与逻辑 OR (||) 连接,而不是 AND (&&)。这是假设EnitityId条件应该存在,无论它是TopNotifications