正如我一直建議,打破了LinqPad和發揮。除非你在做pivot
或bulk insert
聲明,否則在T-SQL中你幾乎沒有辦法在Linq中做什麼。
這一招的訣竅是在您的Admin
和User
表之間進行聯合查詢。之後,它很容易合在一起。雖然我把它分成兩個語句,但這只是爲了清楚起見 - 實際上只有一個查詢被執行。如果你對一個陳述感到絕望,你可以從這裏輕鬆地做到這一點。所以這裏是你的代碼(在LinqPad中驗證):
var combined = Admins.Select(a => new {ID = a.AdminID, UserType = "A", Username = a.Username}).Union(
Users.Select(u => new {ID = u.UserID, UserType = "U", Username = u.Username}));
var result = from p in PMs
join sendr in combined on new {ID = p.SenderID, UserType = p.Sendertype} equals new {sendr.ID, sendr.UserType}
join recpt in combined on new {ID = p.RecipientID, UserType = p.RecipientType} equals new {recpt.ID, recpt.UserType}
select new {p, sendr, recpt}; // pretty this anon-type up if desired...
result.Dump();
請發佈你迄今爲止寫的代碼。人們通常不喜歡只爲你寫代碼。事實上,這是一個工作描述,而不是一個問題。 – 2010-12-13 00:26:35
Linq你在說什麼? Linq到SQL或實體框架? – 2010-12-13 00:39:03