2

私はこのLINQを持っています

var userGroups = this.ObjectContext.UserGroups.Include("Users"); 

問題は、フィールドIsActiveでアクティブな場合、 「ユーザー」をフィルタリングする必要があることです。

したがって、IsActiveであるインクルードテーブル「 Users」のファイルでフィルタリングする必要があります。

LINQでそれを行うにはどうすればよいですか?

ありがとうございました!

_ __ _ __ _ __ _ __ PS

私は次のことをしようとしていますが、よくわかりません...

 var userGroups = this.ObjectContext.UserGroups;

 foreach (var userGroup in userGroups )
 {
     var ussers = this.ObjectContext.Users.Where(f => f.UserGroupID == item.ID && f.IsActive == true).ToList<User>();

     userGroup.Users = users;
 }
4

2 に答える 2

2

これはエンティティへのリンクですか?その場合、熱心にロードされている含まれているエンティティに対して、いかなる種類のフィルタリングも実行できません。Ladislav Mrnkaは、彼の最新のブログ投稿でそれについて書いています。

もちろん、linq-to-objectsを使用して、メモリにロードされたエンティティを処理することは可能ですが、使用可能なエンティティの一部のみが必要な場合は非効率的です。

linq-to-objectsソリューション:

var userGroups = this.ObjectContext.UserGroups.Include("Users")
.Select(ug => new UserGroup {
Name = ug.Name,
// Copy all fields
Users = ug.Users.Where(u => u.Active)
});
于 2012-04-18T18:34:33.847 に答える
1

ステートメントを逆にしてください

var userGroups = this.ObjectContext.Users.Include("UserGroups").Where(f=>f.IsActive == true);  

次に、UserGroupsフィールドでGroupByを使用しますか?

于 2012-04-18T18:36:26.713 に答える