Lambda 表达式和连接
本文关键字:连接 表达式 Lambda | 更新日期: 2023-09-27 18:30:52
我使用以下 linq 表达式来过滤列表:
var query =
follows
.Where(i => i.EUser.EProviders != null)
.Join(
ids,
i => i.EUser.EProviders.Where(j => j.ProviderType == EProvider.EnumProviderType.Facebook).First().Ip,
j => j.Ip,
(i, j) => i);
查询正在工作,但我在 First() 关键字中遇到了问题,因为我只需要比较第一个元素,当我需要比较任何 facebook 类型的提供商时。我正在尝试获取至少有一个 facebook 类型提供商并且提供商 ID 包含在 id 中的所有关注。
我认为这是有效的,但我对查询不满意。对我来说看起来不对劲。
follows
.Where(i => i.EUser.EProviders != null)
.Where(i => i.EUser.EProviders.Where(j => j.ProviderType == EProvider.EnumProviderType.Facebook && ids.Select(k => k.Ip).Contains(j.Ip)).Count() > 0);
也不是那么清楚,但似乎您希望给定 ip 列表中包含某种提供程序类型的关注者列表。
var ids = ids.Select(m => m.Ip).ToList();
var query = follows.Where(i => i.EUser.EProviders.Any(m => m.ProviderType ==EProvider.EnumProviderType.Facebook && ids.Contains(m.Ip)));
不清楚你想要什么,但你可能想使用...
follows.SelectMany(f=>f.EUser.EProviders.Where(j => j.ProviderType == EProvider.EnumProviderType.Facebook))
或类似的东西。
如果您不想只使用"First",那么您使用了错误的运算符。