我正在尝试使用某些过滤器检查实体是否存在。这就是我开始做的
bool jff = (from fm in dc.FamilyMembers
from f in dc.FamilyInfos
where fm.Family_ID == f.Family_ID && (fm.Last_Name == item.LastName && fm.Birthdate == item.DOB && f.Address1.Split(' ')[0].Contains(addNumber))
select new { fm, f }).Any();然后我使用了AsEnumberable
bool jff = (from fm in dc.FamilyMembers.AsEnumberable()
from f in dc.FamilyInfos.AsEnumberable()
where fm.Family_ID == f.Family_ID && (fm.Last_Name == item.LastName && fm.Birthdate == item.DOB && f.Address1.Split(' ')[0].Contains(addNumber))
select new { fm, f }).Any();花了3分钟,所以我猜这不是最好的方法。有没有人能给点建议?
发布于 2021-08-09 17:13:18
最好的方法是在数据库中完成此操作,而不是将所有内容都加载到内存中。然而,join和预过滤应该更有效:
var relevantFamilies = dc.FamilyMembers
.Where(fm => fm.Last_Name == item.LastName && fm.Birthdate == item.DOB);
var relevantFamilyInfo =
from fm in relevantFamilies
join fi in dc.FamilyInfos on fm.Family_ID equals fi.Family_ID
select fi;
bool result = relevantFamilyInfo.AsEnumerable() // because you store multiple informations in Address1 you need to execute part of the query in memory, normalize your DB
.Any(info => info.Address1.Split(' ')[0].Contains(addNumber));https://stackoverflow.com/questions/68715826
复制相似问题