2011-11-08 3 views
0

DiaryPosts, DiaryImpressions, Impression.LINQ - 올바른 결과를 선택하고 계산하는 방법

노출 수는 '좋아요', '싫어함', '동의 함', '동의하지 않음'과 같은 작은 목록입니다. 사용자는 게시물에 대해 생각하는대로 투표 할 수 있습니다.

DiaryImpressions는 게시물과 투표하는 사용자 간의 관계를 처리하는 테이블입니다.

내 문제는 각 게시물에 대한 각 인상 투표의 결과를 계산해야하기 때문에 한 게시물의 사용자 수는 13 명, 싫은 사용자의 수는 2 명, 동의하는 사용자의 수는 34 명, 동의하지 않는 사용자의 수는 1 명입니다.

어떤 방식 으로든 쿼리를 수행하는 방법을 모릅니다. 각 노출에 대해이 특정 집계 결과를 얻을 수 있습니다.

아무도 도와 줄 수 있습니까?

+0

당신이 가지고있는 변수들과 그들이 어떻게 만들어 졌는지 보여주십시오. 우리는 무언가를 만들지 만, 그것이 다르다면 도움이되지 않습니다. – Hogan

답변

1

GroupBy 방법을 통해이를 수행 할 수 있습니다. 노출을 기반으로 요소를 자동으로 "그룹화"하고 그룹당 결과를 계산할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. @ 레드 코치, 어떤 사례라도 줄 수 있습니까? 전에는 그걸 사용하지 않았어요 =) –

+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에서 메시지를 throw합니다. 'Impressions.Impression'열은 집계 함수 또는 GROUP BY 절에 포함되어 있지 않기 때문에 선택 목록에서 유효하지 않습니다. –

+0

방금 ​​더 구체적인 정보를 가지고 다른 질문을 올렸습니다. http://stackoverflow.com/questions/8073817/linq-how-to-select-group-and-count-results –

+0

@rudia gandini 마지막에 i.name – Hogan

관련 문제