【发布时间】:2015-04-22 21:57:30
【问题描述】:
下面的代码正在运行,但如果根据 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 });
【问题讨论】:
-
FirstOrDefault().Password作为旁注,您了解这里的“默认”是什么,如果您要求属性,它会抛出? -
是的 - 我假设它不存在时会抛出 null ?
标签: c# entity-framework lambda