2011-03-23 19 views
0

不同表不同列我有兩個表:拉出從使用LINQ

實體
ID(PK),整數
名稱
記述

用戶
ID (PK)
EntityID,int(這沒有連接到實體表)

現在我正在使用LINQ來提取具有Entity.ID =東西的記錄。這將在我的GridView中顯示幾條記錄。

這裏是我的LINQ聲明:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string getEntity = Request.QueryString["EntityID"]; 
    int getIntEntity = Int32.Parse(getEntity); 
    OISEntityTestingDataContext db = new OISEntityTestingDataContext(); 
    //OISLinqtoSQLDataContext db = new OISLinqtoSQLDataContext(); 
    var tr = 
     from r in db.Users 
     join s in db.Entities on r.UserID equals s.ID 
     where s.ID == getIntEntity 
     select new 
     { 
      //To Show Items in GridView! 
     }; 

    GridView1.DataSource = tr; 
    GridView1.DataBind(); 
} 

現在,我在這裏就「加入」得到一個錯誤MESG:

聯接子句中的類型的表達式之一的不正確。在「加入」的調用中,類型推斷失敗。

這是什麼意思?有人能幫助我嗎?謝謝!

+2

你確定這兩個ID是同一類型,INT32不INT16或其他。 – Mike 2011-03-23 17:02:11

+2

你確定'r.UserID'和's.ID'是同一類型嗎? – 2011-03-23 17:02:38

+0

這兩個都是SQL中的INT類型。 – 2011-03-23 17:14:32

回答

1

基本上,您收到的錯誤告訴您編譯器不知道比較兩個值的方法,因爲一個與另一個不同。你確定你沒有比較stringint嗎?如果您遇到這種情況,你可以明顯地解析字符串,如下圖所示:

var tr = 
    from r in db.Users 
    join s in db.Entities on int.Parse(r.UserID) equals s.ID 
    where s.ID == getIntEntity 
    select new 
    { 
     //To Show Items in GridView! 
    }; 
0

我打賭你的一個加入條件的類型與另一個的類型不匹配。

連接子句中的一個表達式的類型不正確。

確保它們匹配您的實體映射。

在你的文章中,你列出了你的表有一個「ID」列,但在加入一個是ID和另一個是用戶ID。你確定你加入正確的專欄嗎?

+0

我明白了。理查德的答案是同樣的。謝謝 :) – 2011-03-23 17:24:52