比方說,我有三個表: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