我花了一些时间,我相信你需要一种不同的方法,(请注意它与架构相关的东西,我不能 100% 确定它,它可能需要一些修改)。似乎您想为用户创建一个 TODO 列表。我认为,如果你能以某种方式构建它可能会更好
- 一个用户可以有一个或多个待办事项列表(在我的示例中我假设了一个待办事项列表)
- 一个待办事项列表项可以有多个实际待办事项实例
我将遵循类似于以下的结构:
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 类,它当前代表您的用户。然后我有一个 ToDoList 类,它持有 User 类对象(不是 user 的 id),然后我有 ToDoListItem ,它持有 ToDoList 对象作为父对象。
如果我们从数据库的角度来看,那么我们在 User 和 ToDoList 之间存在一对多关系,而在 ToDoList 和 ToDoListItem 之间又是一对多关系。
现在,如果您想搜索未完成工作的用户,只需尝试以下 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);