我想在LINQ查詢添加Enum
條件即使枚舉條件在LINQ查詢在C#
我在模型篩選目的而添加ALL
因此如果用戶選擇ALL,那麼所有的數據應該枚舉數據成員爲空或空顯示
數據模型:
public partial class AuditTable
{
public int ID { get; set; }
public int CompanyId { get; set; }
public int KeyFieldID { get; set; }
public System.DateTime DateTimeStamp { get; set; }
public EntityType DataModel { get; set; }
public string ValueBefore { get; set; }
public string ValueAfter { get; set; }
public string Changes { get; set; }
public AuditActionType AuditActionTypeENUM { get; set; }
public int EmployeeId { get; set; }
public string EmployeeCode { get; set; }
public string Remarks { get; set; }
public string IPAddress { get; set; }
public string UserName { get; set; }
}
public enum AuditActionType
{
All = 1,
Create,
Update,
Delete
}
public enum EntityType
{
All = 1,
BasicDetails,
EmployeeDetails,
PersonalDetails
}
下面的代碼是工作正常,但不得不重複相同的查詢4次。我想將下面的查詢合併爲一個
if (eType == EntityType.All)
if (aType == AuditActionType.All)
AuditTrail = ent.tblAuditTable.Where(s => s.KeyFieldID == ID && s.EmployeeCode.Contains(code) && s.UserName.Contains(username)).OrderByDescending(s => s.DateTimeStamp).ToList();
else
AuditTrail = ent.tblAuditTable.Where(s => s.KeyFieldID == ID && s.AuditActionTypeENUM == aType && s.EmployeeCode.Contains(code) && s.UserName.Contains(username)).OrderByDescending(s => s.DateTimeStamp).ToList();
else
if (aType == AuditActionType.All)
AuditTrail = ent.tblAuditTable.Where(s => s.KeyFieldID == ID && s.DataModel == eType && s.EmployeeCode.Contains(code) && s.UserName.Contains(username)).OrderByDescending(s => s.DateTimeStamp).ToList();
else
AuditTrail = ent.tblAuditTable.Where(s => s.KeyFieldID == ID && s.AuditActionTypeENUM == aType && s.DataModel == eType && s.EmployeeCode.Contains(code) && s.UserName.Contains(username)).OrderByDescending(s => s.DateTimeStamp).ToList();
不僅另一種是更具可讀性,而且還產生較好的SQL查詢(與目前的查詢提供)。 –
我也一樣,但我已經在我的操場上測試了幾種不同的方法,並沒有發現很大的不同,從查詢到查詢只有5-10ms ...並且由於您不會自己讀取SQL查詢,它不會真的不重要。 –
我認爲這更多的是關於個人偏好 –