使用LINQ从不同的表中拉出不同的列

时间:2011-03-23 16:58:10

标签: c# asp.net linq-to-sql web-applications

我有两张桌子:

  

实体
  ID(PK),int
  名称
  描述

     

用户
  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();
}

现在我在'join'上收到错误消息:

  

join子句中某个表达式的类型不正确。调用“加入”时类型推断失败。

这是什么意思?有人可以帮我这个。谢谢!

2 个答案:

答案 0 :(得分: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!
    };

答案 1 :(得分:0)

我打赌你的一个连接条件的类型与另一个的类型不匹配。

join子句中某个表达式的类型不正确。

确保它们与您的实体映射匹配。

在您的帖子中,您将表列为具有“ID”列,但在连接中,一个是ID,另一个是UserID。您确定加入了正确的列吗?