1) 一)OrderBy運算符何時被調用?
var result1 = from artist in artists
from album in artist.Albums
orderby album.Title,artist.Name
select new { Artist_id = artist.id, Album_id = album.id };
被翻譯成以上查詢:
var result = artists.SelectMany(p => p.albums
.Select(p1 => new { Artist = p, Album = p1 }))
.OrderBy(p2 => p2.Album.Title)
.ThenBy(p3 => p3.Artist.Name)
.Select(p4 => new { Artist_id = p4.Artist.id, Album_id = p4.Album.id });
B) 我不知道,如果這個問題會多大意義 - 如果我的假設是正確的,因此OrderBy
總是被調用的最後一個操作符之一(當使用查詢表達式時),那麼我們將如何使用查詢表達式來表達下面的代碼(換句話說,我們如何在查詢表達式中指定我們想要OrderBy
運算符來獲得稱爲soone r和不作爲最後的運營商之一):
var result = artists
.SelectMany(p1 => p1.albums
.OrderBy(p2=>p2.title)
.Select(p3 => new { ID = p3.id, Title = p3.title }));
2)請在下面的查詢表達式兩個orderby
條款會轉換成OrderBy(... artist.Name).OrderBy(... album.Title)
:
var result1 = from artist in artists
from album in artist.Albums
orderby artist.Name
orderby album.Title
select new { ...};
謝謝
[Linqpad](http://www.linqpad.net/)非常適合這類問題。 –
我檢查Linqpad它似乎直接將查詢表達式轉換爲IL代碼(我無法讀取),但它不會將它轉換成C#運算符調用 – user702769
您檢查λ選項卡嗎?爲您提供從查詢語法到鏈式方法的翻譯。會幫助1a和2,而不是1b。但我看到Skeetpad已經踢了,忘了Linqpad;)。 –