4

次のような単純なクラスがいくつかあります。

Class Favorites
Guid UserId
Guid ObjectId

Class Objects
Guid Id
String Name

Entity Framework を使用して、ユーザーがお気に入りとしてマークしたすべてのオブジェクトを選択したいと考えています。

だから私はこのようなことを試しました

context.Objects.Where(
   x => x.Id == 
   context.Favorite.Where(f => f.UserId == UserId)
   .Select(f => f.ObjectId).Any()
);

しかし、私はそれを取得しません。私も交差させてみましたが、私が最も理解しているのは同じタイプです。1 人のユーザーが複数のお気に入りオブジェクトを持つことができます

4

5 に答える 5

6

join 句を使用できます。

context.Favorite
  .Where(f => f.UserId == UserId)
  .Join(context.Objects, t => t.ObjectId, u => u.Id, (t, u) => t);
于 2012-12-05T19:46:15.247 に答える
4

私は参加します、私のlinqは次のようになります:

var matches = from o in context.Objects
join f in context.Favorite on o.Id equals f.ObjectId
where f.UserId == UserId
select o;
于 2012-12-05T19:49:35.997 に答える
1
from o in context.Objects
join f in context.Favorites on o.Id equals f.ObjectId
where f.UserId == @userId
select //whatever you wants
于 2012-12-05T19:48:32.940 に答える
0

お気に入りクラスには、それをオブジェクトにリンクするプロパティが必要であり、二重の where 句の代わりに Include を使用できます

クラス

Class Favorites
    Guid UserId
    Guid ObjectId
    [ForeignKey("Id")]
    Objects objs

Class Objects
    Guid Id
    String Name

リンク

context.Favorites.Include(objs).Where(x => x.UserID == UserID)

次に、お気に入りオブジェクトの下にオブジェクトのコレクションがあります。

于 2012-12-05T19:53:54.360 に答える
0

Any() の代わりに FirstOrDefault() を使用する

于 2012-12-05T19:44:41.720 に答える