2012-09-14 105 views
0

我有是有一列一個變種變量,我想使加入與數據庫table.my代碼列如下:加入與得到的名單在LINQ

var notlinked = _client.Except(linked).ToList(); 
var result = (from e in iEnt.clientmasters 
       join g in notlinked on e.ClientID equals g.ClientID 
       select e).ToList(); 

現在notlinked是有一列,並依賴於我想從數據庫中檢索信息,所以在下一行我正在加入到該表中,但是當我執行它時出現以下錯誤:

無法創建類型的常量值'匿名類型'。在此上下文中僅支持基本類型(如Int32,String和Guid)。

建議我一些解決這個

回答

0

下面是示例應用程序找東西。我有兩個列表客戶和另一個是int列表。

 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) { 


      List customers=new List(); 
      customers.Add(new Customer(1,"Jalpesh")); 
      customers.Add(new Customer(2, "Kaushal")); 
      customers.Add(new Customer(3, "Mahesh")); 

      List intList=new List{1,2}; 


      var customerList = customers.Where(c => intList.Contains(c.Id)); 

     } 


    } 

    public class Customer 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 

     public Customer(int id,string name) { 
      Id = id; 
      Name = name; 
     } 
    } 
} 

 
0

我不知道LINQ to SQL的那麼多,但我猜preoblem是,你試圖做一些來自數據庫和未來的東西之間的連接,其是內存中的列表。你應該做這樣的事情:

var result = 
    from e in iEnt.clientmasters 
    where notlinked.Contains(e.ClientID) 
    select e 

在這種情況下,我認爲LINQ到SQL將會能夠生成SQL IN(...)子句。根本沒有測試過,但你明白了。

編輯

欲瞭解更多的背景看,例如here

+0

它不是爲我工作:(收到錯誤.. – DharaPPatel

+0

什麼樣的錯誤? – Wasp

+0

我編輯的答案,給你一個更擴展的參考,Sql的Linq應該支持這種情況。 – Wasp

0

你可以跳過加入,而不是隻寫在LINQ

var notlinked = _client.Except(linked).ToList(); 
var result = (from e in iEnt.clientmasters 
       from g in notlinked 
       where e.ClientID == g.ClientID 
       select new 
       { 
        Colomn1 = e.firstColomn 
        Colomn2 = g.secondColomn 
       }).ToList(); 

自己的輸出這不是最優雅的方式,但我傾向於當每一個其他的想法未能做到這一點。

0

使用List<int> notlinked而不是var notlinked。和相當JOIN使用WHERE子句和檢查notlinked包含e.ClientID

List<int> notlinked = _client.Except(linked).Select(o => o.ClientID).ToList<int>(); 
var result = (from e in iEnt.clientmasters 
       where notlinked.Contains(e.ClientID) 
       select e).ToList();