次の 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);
クエリは機能していますが、タイプ facebook のプロバイダーを比較する必要があるときに、最初の要素のみを比較しているため、First() キーワードで問題が発生しました。タイプfacebookのプロバイダーが少なくとも1つあり、プロバイダー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);