2011-11-08 87 views
0

我有3個表格:DiaryPosts,DiaryImpressions,Impressions。LINQ - 如何選擇和計算正確的結果

印象是一個小清單,其中一些字段:「喜歡」,「不喜歡」,「同意」,「不同意」。用戶可以根據他對帖子的看法進行投票。

DiaryImpressions是處理帖子和投票用戶之間關係的表。

我的問題是,我都數不過來的每一次展示投給每個崗位的結果,所以也許一個職位13名網友投票像,2厭惡,34並同意不同意1。

我不知道如何以某種方式,我可以得到每個展示這個特定的計數結果進行查詢。

任何人都可以幫助我嗎?

+0

請向我們展示您擁有的變量以及它們是如何製作的。我們製造了一些東西,但是如果它不同,那也沒有幫助 – Hogan

回答

1

您可以通過GroupBy方法做到這一點。它允許您根據印象自動「分組」元素,並對每個組的結果進行計數。

+0

感謝您的回答@Reed Copsey,您能否給我舉個例子嗎?我從來沒有使用過之前=) –

+1

@RubiaGardini它取決於你的類型比什麼都重要。我會看看使用GroupBy的101 LINQ示例的好例子:http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b –

0
var post(from c in posts selec c) 

string post1like; 
string post2dislike; 
string postagree3; 
string postdisagree3; 


foreach (var item in posts) 

{ 
    var ipressionslike=(from c in imressions where impressioid=item.id where c.impressionID='LIKE' select c.userID).Tolist() 
    var ipressionsdislike=(from c in imressions where impressioid=item.id where c.impressionID='disLIKE' select c.userID).Tolist() 
    var ipressionslike=(from c in imressions where impressioid=item.id where c.impressionID='LIKE' select c.userID).Tolist() 
    var ipressionsagree=(from c in imressions where impressioid=item.id where c.impressionID='disLIKE' select c.userID).Tolist() 
post1like+=item.id+""+ipressionsdislike.count; 
post2dislike+=item.id+""+ipressionslike.count; 
postagree3+=item.id+""+ipressionsagree.count; 
} 

應該指望每個職位的印象,並數着喜歡的用戶數量或不喜歡的,所以如果你有30人不喜歡每篇文章就應該讓他們看不到你的表結構,但我希望它會幫助或指向你的地方

+0

謝謝@COLD TOLD,如果我無法實現如何組我自己動手,我會跳過這一點,並確實使用你的例子,這讓我的頭腦真的很清楚。 –

0

我必須猜測,但這裏是我認爲的SQL就像:

SELECT I.Name, COUNT(I.Name) 
FROM DairyPosts P 
JOIN DairyImpressions DI ON P.ID=DI.DairyID 
JOIN Impressions I ON DI.ImpressionsID = I.ID 

什麼的LINQ會是什麼樣子:

List<Dairy> dairyposts = GetDairyPosts(); 
var impressionCounts = 
    from p in dairyposts 
    group p by p.ImpressionName into g 
    select new { Type = g.Key, ImpressionCount = g.Count() }; 

當然,我必須假設你的列表是以某種方式創建的,如果你可以發佈你的列表實際上是如何創建的,這將有所幫助。 (正如我在評論中所說)

+0

我不能這樣做,如果我嘗試這一行/; SELECT i.Impression,COUNT(i.Impression)MSSQL拋出一條消息:列'Impressions.Impression'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。 –

+0

我剛剛發佈更具體的信息,另一個問題http://stackoverflow.com/questions/8073817/linq-how-to-select-group-and-count-results –

+0

@rudia甘迪尼 - 你的第一個評論通過添加組i.name到最後 – Hogan