繁体   English   中英

具有实体框架的C#Lambda-即使没有匹配项也返回结果

[英]C# Lambda with Entity Framework - Return a result even when no match

下面的代码可以正常工作,但是如果无法根据where子句使用“域管理员”找到条目,它将完全忽略该特定结果上的任何其他内容。 这导致我缺少项目,因为正在生成的视图可能没有“域管理员”条目。 我知道这是因为这是一个明确的位置,但是我不太确定如何准确表示我需要做的事情。 我怀疑我需要做一个LEFT JOIN,但是不确定这会如何影响导航属性。 任何对正确方向的指导将不胜感激。

var endpointConstructor = db.tbl_equipment.Include(t => t.tbl_Backup_Configuration)
   .Where(e => e.tbl_Backup_Configuration.FirstOrDefault().BackupType == null)
   .Where(e => e.tbl_customer.Calc_Contract_Status == true && e.Calc_Contract_Status == true && e.Equip_type.Contains("server")).OrderBy(e => e.tbl_customer.Priority)
   .Where(what => what.tbl_customer.tbl_user_pass_list.FirstOrDefault().Usage1 == "Domain Administrator")
   .Select(s => new CompanyServerUserPassViewModel { Comp_ID = s.Comp_ID, ServerName = s.NetBIOS_name, AdminUsername = s.tbl_customer.tbl_user_pass_list.FirstOrDefault().Username,
   AdminPassword = s.tbl_customer.tbl_user_pass_list.FirstOrDefault().Password, Company = s.Company, TeamviewerID = s.tbl_computerinfo.FirstOrDefault().teamviewerID });

类似于以下内容:

.Where(what => [statement that evaluates to true if there is no domain admin] 
|| what.tbl_customer.tbl_user_pass_list.First().Usage1 == "Domain Administrator")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM