Linq 扩展方法查询 table
Linq extension method to query a table
我有一个 table,如下所示(它是一个审计 table,包含来自不同 table 的数据)和其他一些列:
我正在尝试从审计 table 中获取所有值,其中 table 名称列包含 table,其顶部和 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
我试过以下:
var logList = _dbcontext.Audits.Where(e => e.TableName.Contains("TOP") && e.EntityId == 1007.ToString()).ToList()
此查询为我提供了包含 top 值的结果,但是当我尝试添加另一个条件以从 Notification 获取所有值时,我得到 "Enumeration returns no result"。这是我的尝试
var logList = _dbcontext.Audits.Where(e => e.TableName.Contains("TOP") && e.EntityId == 1007.ToString() && e.TableName.Contains("Notifications")).ToList()
我的错误是什么?
您可能正在寻找这个:
var logList = _dbcontext.Audits
.Where(e => (e.TableName.Contains("TOP") || e.TableName.Contains("Notifications"))
&& e.EntityId == 1007.ToString()).ToList()
列名应使用逻辑或 (||) 而不是与 (&&)。这是假设 EnitityId
条件应该存在,无论它是 Top
还是 Notifications
。
AND 操作数 && 以这种方式起作用,即对于 select 该行的一行,所有条件都必须为真。使用您提供的数据,您需要此查询:
var logList = _dbcontext.Audits.Where(e => (e.TableName.Contains("TOP") || e.TableName.Contains("Notifications"))
&& e.EntityId == "1007" ).ToList()
我有一个 table,如下所示(它是一个审计 table,包含来自不同 table 的数据)和其他一些列: 我正在尝试从审计 table 中获取所有值,其中 table 名称列包含 table,其顶部和 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
我试过以下:
var logList = _dbcontext.Audits.Where(e => e.TableName.Contains("TOP") && e.EntityId == 1007.ToString()).ToList()
此查询为我提供了包含 top 值的结果,但是当我尝试添加另一个条件以从 Notification 获取所有值时,我得到 "Enumeration returns no result"。这是我的尝试
var logList = _dbcontext.Audits.Where(e => e.TableName.Contains("TOP") && e.EntityId == 1007.ToString() && e.TableName.Contains("Notifications")).ToList()
我的错误是什么?
您可能正在寻找这个:
var logList = _dbcontext.Audits
.Where(e => (e.TableName.Contains("TOP") || e.TableName.Contains("Notifications"))
&& e.EntityId == 1007.ToString()).ToList()
列名应使用逻辑或 (||) 而不是与 (&&)。这是假设 EnitityId
条件应该存在,无论它是 Top
还是 Notifications
。
AND 操作数 && 以这种方式起作用,即对于 select 该行的一行,所有条件都必须为真。使用您提供的数据,您需要此查询:
var logList = _dbcontext.Audits.Where(e => (e.TableName.Contains("TOP") || e.TableName.Contains("Notifications"))
&& e.EntityId == "1007" ).ToList()