var res = from H in db.Products
join C in db.customers on H.Username equals C.Username
where C.Username == H.Username
select H;
Results results = res.Single();
上面的代碼使得C和H之間的內聯接(where子句是不必要的),並導致所有元素還給其中一個適當地連接產品和客戶的條目存在。
選擇H「just」從產品中返回所有數據。正如你所說你想要一個混音你需要做不同的事情。
我自己會使用匿名類型(或dto對象)。 對於匿名類型:
select new { Username = H.Username, Product = H.Product, EMail = C.EMail}
放在一起:
var res = from H in db.Products
join C in db.customers on H.Username equals C.Username
where C.Username == H.Username
select new { Username = H.Username, Product = H.Product, EMail = C.EMail}
Results results = res.Single();
對於DTO(數據傳輸對象),您將創建與公共設置一個類/獲取屬性,並使用選擇新MyClass的(){ ....}而不是選擇新的{}。
的DTO是重用方面更好,你有錯寫的名字,你使用較少的問題,....
只需簡單地使用選擇H,C可悲的是不能工作因爲Linq想要每行僅返回單個對象(並且總是具有相同的數據類型)。因此,您需要在要返回的對象周圍放置容器。在這種情況下,無論是匿名類型還是DTO。
什麼是你不確定的? .Single()或查詢本身會給你什麼結果,...? – Thomas
如果您不確定內聯接的語法,那麼作爲其內連接,它將只給出H和C中值都相同的結果(如果連接已具有適當的值,則不應該這樣做)。 ://stackoverflow.com/questions/37324/what-is-the-syntax-for-an-inner-join-in-linq-to-sql – Thomas
@Thomas我想知道我會回到什麼樣的價值......例如,這將使用用戶名電子郵件和產品填充結果類嗎? –