2011-01-23 119 views
1

我想在C#中使用LINQ創建標籤雲。我從來沒有使用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 2011-01-23 22:06:01

回答

5

LINQ!= TSQL;每個and應該是C#,&&;每個join應指定左邊和右邊的部分(與equals立即,即

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

如果你想寫TSQL,這是沒有問題 - 只需使用.ExecuteQuery<T>(tsql, args)

0

感謝馬克,我擺脫大多數錯誤通過修復連接。有4個錯誤其餘:

select new { 

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

}; 

1)名稱AF不在當前上下文中存在, 2)的名稱PSF不會在當前上下文中存在

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指令還是程序集引用? )