ユーザーグループ内に動的フィールドがあり、ユーザーグループのユーザーに基づいてそれらを選択したいと考えています。
.Where(x => x.UserGroupId == x || ...
基本的に、動的フィールドを取得するためだけに約20のクエリを作成するため、次のようなクエリをシミュレートしたいと考えています。
たぶん、どうにかして整数の配列を渡すことができUserGroupId
、 でクエリをシミュレートします||
。
これが私の例です。両方の結果出力は同じです。違いは、最初のクエリにはデータベースへのクエリが 20 個あり、2 番目のクエリには 1 個しかないことだけです。
public IEnumerable<UserGroup> UserGroups
{
get
{
var db = new MainDataContext();
return db.UserGroupUsers.Where(x => x.UserId == this.Id).Select(x => x.UserGroup);
}
}
public IEnumerable<UserDynamicField> DynamicFields
{
get
{
var db = new MainDataContext();
var fields = this.UserGroups.SelectMany(x => x.UserGroupDynamicFields); // 20+ queries
var fields2 = db.UserGroupDynamicFields.Where(x =>
x.UserGroupId == 1 ||
x.UserGroupId == 2 ||
x.UserGroupId == 3 ||
x.UserGroupId == 4 ||
x.UserGroupId == 5 ||
x.UserGroupId == 6 ||
x.UserGroupId == 7 ||
x.UserGroupId == 8 ||
x.UserGroupId == 9 ||
x.UserGroupId == 10); // 1 query, maybe I can somehow pass array of Id's here?
}
}