Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在LINQ中将循环缩短为一个查询_C#_Linq - Fatal编程技术网

C# 在LINQ中将循环缩短为一个查询

C# 在LINQ中将循环缩短为一个查询,c#,linq,C#,Linq,下面是我在循环中执行的一段代码: 首先,在第一个查询中,我得到一个位置ID列表。清单可能很长 最后,我需要找到哪个LocationIdFamiliId>0 我已经做了一个循环,但我想做一个问题。可能吗?如果可能,如何实现 var locationIds = context.TblUsersDistricts .Where(d => d.UserId == userId && d.ValidityTo == null) .Select(x => x.Location

下面是我在循环中执行的一段代码:

首先,在第一个查询中,我得到一个位置ID列表。清单可能很长

最后,我需要找到哪个LocationId
FamiliId>0

我已经做了一个循环,但我想做一个问题。可能吗?如果可能,如何实现

var locationIds = context.TblUsersDistricts
 .Where(d => d.UserId == userId && d.ValidityTo == null)
 .Select(x => x.LocationId).ToList();

int familyId = 0;

foreach(var item in locationIds) {
   familyId = (from I in context.TblInsuree 
   join F in imisContext.TblFamilies on I.FamilyId equals F.FamilyId 
   join V in imisContext.TblVillages on F.LocationId equals V.VillageId 
   join W in imisContext.TblWards on V.WardId equals W.WardId 
   join D in imisContext.TblDistricts on W.DistrictId equals D.DistrictId 
   where(I.Chfid == chfid &&
   D.DistrictId == item &&
   F.ValidityTo == null &&
   I.ValidityTo == null &&
   V.ValidityTo == null &&
   W.ValidityTo == null &&
   D.ValidityTo == null) 
   select F.FamilyId)
  .FirstOrDefault();

 if (familyId > 0) break;
};
听起来你想要:

var familyId=(
来自LocationId中的项
来自context.TblInsuree中的I
//…等等
&&D.ValidityTo==null)
选择F.FamilyId)
.FirstOrDefault();

是的,就是这个。谢谢,我认为他们需要
FirstOrDefault(id=>id>0)
,因为一旦id大于0,他们就会
中断。尽管所有id都是负数,但它们的代码将取与最后一个
locationId
相关的第一个id。在我看来,
id>0
行用于表示
id!=默认值(int)
。在这种情况下,您最好去掉familyId变量,并使用
.AnyAsync()
代替
FirstOrDefaultAsync()(或者它们的非异步版本,如果这是您想要的)。