Linq 中 ElementAtOrDefault() 的替代 Sql
Alternative of ElementAtOrDefault() in Linq to Sql
我想运行以下查询,但它说不支持 ElementAt。
List<Road> rdExist = (from u in db.Roads where (u.GPScoordinates.ElementAtOrDefault(0).Latitude == lattitude1 && u.GPScoordinates.ElementAtOrDefault(0).Longitude == longitude1) && (u.GPScoordinates.ElementAtOrDefault(1).Latitude == lattitude2 && u.GPScoordinates.ElementAtOrDefault(1).Longitude == longitude2) select u).ToList();
有人可以提出替代方案吗?我自己也想不通。 FirstOrDefault 工作正常,但在这个查询中无法帮助我。
你可以使用Skip & FirstOrDefault:-
List<Road> rdExist = (from u in db.Roads where
(u.GPScoordinates.FirstOrDefault().Latitude == lattitude1 &&
u.GPScoordinates.FirstOrDefault().Longitude == longitude1) &&
(u.GPScoordinates.Skip(1).FirstOrDefault().Latitude == lattitude2 &&
u.GPScoordinates.Skip(1).FirstOrDefault().Longitude == longitude2) select u).ToList();
LINQ-SQL 不支持 ElementAtOrDefault
。检查 this.
此外,使用此查询时请小心,因为在默认值的情况下可能会导致 Null reference exception
。因此,最好在检索值之前检查空值。
尝试用 Skip(n).FirstOrDefault()
代替 ElementAtOrDefault(n)
。这基本上意味着 "get the first element after skipping n
elements",这与 "get element at position n
" 大致相同,在后一种情况下 n
从 0
开始:
List<Road> rdExist = (from u in db.Roads
where (u.GPScoordinates
.FirstOrDefault().Latitude == lattitude1 &&
u.GPScoordinates
.FirstOrDefault().Longitude == longitude1) &&
(u.GPScoordinates
.Skip(1).FirstOrDefault().Latitude == lattitude2 &&
u.GPScoordinates
.Skip(1).FirstOrDefault().Longitude == longitude2)
select u).ToList();
我想运行以下查询,但它说不支持 ElementAt。
List<Road> rdExist = (from u in db.Roads where (u.GPScoordinates.ElementAtOrDefault(0).Latitude == lattitude1 && u.GPScoordinates.ElementAtOrDefault(0).Longitude == longitude1) && (u.GPScoordinates.ElementAtOrDefault(1).Latitude == lattitude2 && u.GPScoordinates.ElementAtOrDefault(1).Longitude == longitude2) select u).ToList();
有人可以提出替代方案吗?我自己也想不通。 FirstOrDefault 工作正常,但在这个查询中无法帮助我。
你可以使用Skip & FirstOrDefault:-
List<Road> rdExist = (from u in db.Roads where
(u.GPScoordinates.FirstOrDefault().Latitude == lattitude1 &&
u.GPScoordinates.FirstOrDefault().Longitude == longitude1) &&
(u.GPScoordinates.Skip(1).FirstOrDefault().Latitude == lattitude2 &&
u.GPScoordinates.Skip(1).FirstOrDefault().Longitude == longitude2) select u).ToList();
LINQ-SQL 不支持 ElementAtOrDefault
。检查 this.
此外,使用此查询时请小心,因为在默认值的情况下可能会导致 Null reference exception
。因此,最好在检索值之前检查空值。
尝试用 Skip(n).FirstOrDefault()
代替 ElementAtOrDefault(n)
。这基本上意味着 "get the first element after skipping n
elements",这与 "get element at position n
" 大致相同,在后一种情况下 n
从 0
开始:
List<Road> rdExist = (from u in db.Roads
where (u.GPScoordinates
.FirstOrDefault().Latitude == lattitude1 &&
u.GPScoordinates
.FirstOrDefault().Longitude == longitude1) &&
(u.GPScoordinates
.Skip(1).FirstOrDefault().Latitude == lattitude2 &&
u.GPScoordinates
.Skip(1).FirstOrDefault().Longitude == longitude2)
select u).ToList();