2012-11-14 21 views
3

如何在SQL中爲此代碼構建一個Linq到sql查詢,我嘗試了幾件事情。這是我的基本代碼:在Linq中劃分爲SQL查詢

List<Movie> movies = 
(from item in db.Movies select item).ToList<Movie>(); 
return movies; 

這就是我想要的結果。

select (Won/Total) as 'rankPercentage' 
from dbo.Filmranking 
order by rankPercentage desc 

感謝

+1

FilmRanking看起來像是一張單獨的表格。它如何連接到電影表? – akatakritos

+0

你可以假設表中的字段是「id」,「name」,「won」,「total」。這是打算分爲兩列,併爲它創建一個新的列,就像在SQL中一樣。這在ASP中可能嗎? –

回答

0
var movies = 
    (from items in db.Movies 
    select new { RankPercentage = item.Won/item.Total }) 
    .ToList(); 

在這一點上,電影將是一個List<T>,其中T是一個浮動或INT取決於底層SQL類型(我不能從你的問題辨別)。如果您真的想要將其作爲List<Movie>進行投影,您需要按如下方式進行投影,但結果不太可能與您的SQL表匹配。

List<OtherMovieType> movies = 
    (from items in db.Movies 
    select new OtherMovieType() { 
     Name = item.Name, 
     RankPercentage = item.Won/item.Total 
     }) 
     .ToList(); 
+0

andleer,如果我錯了,請糾正我,但我認爲你不能從你正在檢索的上下文中投射出相同的實體類型,我認爲你會有一個引用問題和一個不同步的背景,至少那是我的印象。 –

+0

我在回答中說過。 「如果你真的想把它作爲List 來投影,你將需要按如下方式進行投影,但是你的結果不太可能與你的SQL表匹配。」將更新代碼以更好地指出。 – andleer

0

你需要的東西稱爲投影,這樣的事情:也許你想

var result = db.Movies 
      .Select(x => new { title=x.Title, rank = (x.Won/x.Total) }) 
      .OrderBy(x => x.rank); 

編輯標題,以確定您的記錄:)

0
item.Won/db.Awards.Count 

算一個屬性?我覺得是這樣的。

+0

或者它可能是x.Count()和x.Length是屬性。 –

+0

1/2會返回.5還是整數? –