2011-01-23 9 views
1

LINQを使用してC#でタグクラウドを作成しようとしています。以前はLINQを使ったことがないので、いくつかの構文エラーが出ています。誰かが私のコードを修正する手助けをすることができますか?あなたの助けを前もってありがとう!C#LINQタグクラウド

private void BindTagCloud() 
{ 



var tagSummary = from af in db.AgileFactors 
       join psf in db.ProjectStoryFactors 
       join s in db.Stories 
       join pim in db.ProjectIterationMembers 
       join i db.Iteration 
       join p db.Project 
       where p.ProjectID == proj_id 
        p.ProjectID == i.ProjectID and 
        i.ProjectIterationID == pim.ProjectIterationID and 
        pim.ProjectIterationMemberID == s.ProjectIterationMemberID and 
        s.StoryID == psf.StoryID and 
        psf.AgileFactorID == af.AgileFactorID 
        group af by af.Name into tagGroup 

        select new 
        { 

         ID = af.AgileFactorID, 
         Total = psf.Count() 

        }; 


var tagCloud = from psf in tagSummary 
      where psf.AgileFactorID == tagSummary.ID 
select new 
{ 

Name = psf.Name, 
ID = psf.AgileFactionID, 
Count = psf.Count(), 

weight = Count/tagSummary.Total * 100 

}; 


ListView1.DataSource = tagCloud; 
ListView1.DataBind(); 

} 
+1

あなたがエラーを投稿した場合、それが発生した場所に役立つでしょう – Karel

+0

エラーをリストできますか? – Homam

+0

私の参加とwhereステートメントが間違っています。私は、 "and"の代わりに "&&"を使用しました。これにより、いくつかのエラーが修正されました。残りのエラー:予想されるコンテキストキーワードON;予想されるコンテキストキーワードEQUALS ... – MiziaQ

答えて

5

LINQ!= TSQL;それぞれandはC#、&&でなければなりません。各join、すなわちすぐ

join newAlias in newSet on existingAlias.Key equals newALias.Key 

あなたがTSQLを書きたい場合は(equalsで)左と右の部分を指定する必要があり、それは結構です - ちょうど.ExecuteQuery<T>(tsql, args)

0

おかげでマルクを使用し、私が処分しましたジョインを固定することによってエラーのほとんどを解決します。残りの4つのエラーがある:

select new { 

ID = af.AgileFactorID, 
Total = psf.Count() 

}; 

1)名AFが名前PSFは現在のコンテキストに存在しない 2)、現在のコンテキストに存在しない

var tagCloud = from psf in tagSummary where psf.AgileFactorID == tagSummary.ID 

1)エラー62 'AnonymousType#1'に 'AgileFactorID'の定義が含まれておらず、 'AnonymousType#1'タイプの最初の引数を受け入れる拡張メソッド 'AgileFactorID'がありませんでした(使用するディレクティブまたはアセンブリ参照がありませんか)

2)エラー63 'System.Collections。 Generic.IEnumerable 'には' ID 'の定義が含まれておらず、' System.Collections.Generic.IEnumerable 'タイプの最初の引数を受け入れる拡張メソッド' ID 'はありません(usingディレクティブまたはアセンブリ参照がありませんか? )