【发布时间】:2015-04-21 23:56:16
【问题描述】:
我在构建 Linq 表达式时遇到问题,我现在将解释问题
我有 4 个表格(模型),它们以非常简单的方式看起来像这样:
用户
- 用户ID(PK)
- 用户名(字符串, 非空)
UserInEvent
- UserInEventID (PK)
- UserID (FK, NOT NULL)
- EventID (FK, NOT NULL)
Event
- EventID (PK)
- EventName(字符串, 非空)
UserInTraining
- UserInTrainingID (PK)
- UserID (FK, NULL)
- EventID (FK, NOT NULL)
- Username (string, 非空)
现在你应该知道一些事情:
注册用户可以添加到事件 (UserInEvent) 和培训 (UserInTraining)
已注册的用户可以参加作为活动一部分的培训 (UserInTraining),而无需在活动中注册 (UserInEvent)
未注册的用户可以参加作为活动一部分的培训 (UserInTraining),而无需在活动中注册 (UserInEvent)
未注册用户不能在未注册用户的情况下参与事件 (UserInEvent)
现在我的 LINQ 表达式应该获取“UsersInTraining”中但不在“UserInEvent”中的所有“用户”和“未注册用户”,然后返回一个匿名类型(也可以创建一个模型),看起来像这样:
UsersInTrainingButNotInEvent
- 事件名称
- 用户名
- IsUser (bool, false im not registered)
- Username (string, 空)
这是我的表达方式(据我所知):
from usr in _userService.GetAllUsers()
join tr in _trainingService.GetAllTrainings() on usr.userID equals tr.userID into
usersInTraining
join usrTr in _eventService.GetAllEvents() on usr.userID equals
usrTr.userID into usersInEvents
但从这里开始,我不知道如何继续并在 LINQ 表达式中执行我的逻辑:
- 让所有用户参与培训
- 获取事件中的所有用户
- 获取所有在培训中但未在事件中注册的用户,以及未在“用户”中注册但在培训中的用户
-
返回具有上述详细信息的匿名类型或模型
我也对更好的策略持开放态度,但我无法更改表格,因为必须如此。感谢您的帮助!
【问题讨论】:
标签: c# asp.net-mvc linq