私はそれにしばらく時間を費やしましたが、別のアプローチが必要だと思います (アーキテクチャに関連するものであり、100% 確信が持てないことに注意してください。変更が必要になる場合があります)。ユーザーの TODO リストを作成したいようです。という形で構成できればもっといいと思います
- ユーザーは 1 つ以上の To Do リストを持つことができます (この例では 1 つの To Do リストを想定しています)
- 1 つの To Do リスト アイテムには、実際の作業の複数のインスタンスを含めることができます。
以下のような構造に従います。
public class User
{
public string ID { get; set; }//.... All User Attributes AND
}
public class TodoList
{
public string Id { get; set; }
public User owner { get; set; }
}
public class TodoListItem
{
public string ItemID { get; set; }
public TodoList parent { get; set; }
public string ItemDescription { get; set; }
public bool IsCompleted { get; set; }
}
上には、現在ユーザーを表している User のクラスがあります。次に、 User クラス オブジェクト ( user の id ではない) を保持している ToDoList のクラスがあり、次に ToDoList オブジェクトを親として保持している ToDoListItem があります。
データベースの観点から見ると、User と ToDoList の間には 1 対多の関係があり、ToDoList と ToDoListItem には 1 対多の関係があります。
未完了の作業があるユーザーを検索する場合は、次の linq クエリを試してください。
var query = from t in listTDL
where t.IsCompleted == false
select t.parent.owner;
テスト データ構造を埋めるために、次の行が必要になる場合があります。
User user = new User() { ID = "User1" };
TodoList td = new TodoList() { Id = "TD1", owner = user};
List<TodoListItem> listTDL = new List<TodoListItem>();
TodoListItem tdl = new TodoListItem() { ItemID = "TDL1", ItemDescription = "Frist Item", IsCompleted = false, parent=td };
listTDL.Add(tdl);
listTDL.Add(new TodoListItem() { ItemID = "TDL2", ItemDescription = "second Item", IsCompleted = true, parent = td });
listTDL.Add(new TodoListItem() { ItemID = "TDL3", ItemDescription = "third Item", IsCompleted = true, parent = td });
listTDL.Add(new TodoListItem() { ItemID = "TDL4", ItemDescription = "fourth Item", IsCompleted = false, parent = td });
List<User> userList = new List<User>();
userList.Add(user);