2010-06-28 64 views
0

任何時候,我用它下面的代碼拋出的錯誤:在LINQ查詢中使用string.Join的替代方法?

Method 'System.String Join(System.String, System.Collections.Generic.IEnumerable`1[System.String])' has no supported translation to SQL.

 var items = from t in fc.table 
        where t.id== objId 
        select new 
        { 
         t.id, 
         t.name, 
         string.Join(...) 
        }; 

我嘗試使用LINQ聚合方法,但有一個類似的錯誤。有關如何獲取字符串的任何建議。連接功能沒有錯誤?

此外,此代碼編譯罰款。這是當我嘗試使用引發錯誤的項目進行操作時。

+0

我不知道很多關於數據庫,但是你可以使用一個存儲過程,做和Join一樣嗎? – Qwertie 2010-06-28 17:13:37

+0

最有可能。不要將我在這裏討論的連接和表連接混淆了。對於我的情況,我想弄清楚如何使用LINQ來做到這一點。 – 2010-06-28 17:24:23

+0

通過LINQ不可能完成任何事情 - 只支持.NET函數的一個子集。 'string.Join'位於[不支持的方法列表](http://msdn.microsoft.com/zh-cn/library/bb882672.aspx)。 – 2010-06-28 17:26:03

回答

1

強制查詢首先在客戶端上運行,以提取原始數據,然後再加入在內存中的字符串:

var items = from a in (from t in fc.table 
          where t.id== objId 
          select new 
          { 
           t.id, 
           t.name, 
           t.a, t.b, t.c 
          }).AsEnumerable() 
       select new 
       { 
        a.id, 
        a.name, 
        string.Join(",", new[] { a.a, a.b. a.c }) 
       };