比方说,我有三个表:LINQ到SQL表合并
用户
ID | Name =========== 1 | UserA ----------- 2 | UserB -----------
设置
ID | Name | Default ========================= 1 | SettingA | ADefault ------------------------- 2 | SettingB | BDefault -------------------------
而且
UserSetting
UserID | SettingID | Value ================================ 1 | 1 | Alice -------------------------------- 1 | 2 | Bob -------------------------------- 2 | 1 | AOverride --------------------------------
当我创建我的dbml文件时,根据数据库中设置的外键将用户适当地链接到UserSetting
和UserSetting
到Setting
。
我想知道的是,如果用户没有以某种合理的方式明确覆盖值,它是否可以从UserSetting
合并回Setting
表。
具体来说,我正在寻找以下伪代码:
var user = MyDataContext.Users.SingleOrDefault(u => u.ID == 2);
foreach(var setting in user.UserSettings)
{
Console.Writeline(setting.ID + "|" + setting.Value);
}
要输出是这样的:
1 | AOverride 2 | BDefault
不用做任何修改,user.UserSettings将只包含有值专门被覆盖,所以它只会返回:
1 | AOverride
任何想法?或者有更多代表的人请帮助我重述一下,因为它可能不完全清楚? :)
这工作完美。我做了一个我认为有帮助的小调整。而不是在linq查询中设置IsDefault,SettingValue中的get仅返回(Setting.Default == Value)。 – jerhinesmith 2009-04-15 16:10:40