0

次の 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);
4

2 に答える 2

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)));
于 2012-04-13T05:42:45.390 に答える
0

何が欲しいのか明確ではありませんが、使用したいかもしれません...

follows.SelectMany(f=>f.EUser.EProviders.Where(j => j.ProviderType == EProvider.EnumProviderType.Facebook))  

または似たようなもの。

「First」だけが必要ない場合は、間違った演算子を使用しています。

于 2012-04-12T23:07:46.127 に答える