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

C# 使用LINQ从不同的表中拉出不同的列,c#,asp.net,linq-to-sql,web-applications,C#,Asp.net,Linq To Sql,Web Applications,我有两张桌子: 实体 ID(PK),int 名称 描述 用户 ID(主键) EntityID,int(未连接到实体表) 现在我使用LINQ来提取具有Entity.ID=something的记录。这将在GridView中显示两条记录 以下是我的LINQ声明: protected void Page_Load(object sender, EventArgs e) { string getEntity = Request.QueryString["EntityID"];

我有两张桌子:

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

用户
ID(主键)
EntityID,int(未连接到实体表)

现在我使用LINQ来提取具有Entity.ID=something的记录。这将在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子句中某个表达式的类型不正确。调用“Join”时类型推断失败


这是什么意思?有人能帮我一下吗。谢谢大家!

我敢打赌,您的一个加入条件的类型与另一个的类型不匹配

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

确保它们在实体映射中匹配


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

基本上,您收到的错误告诉您,编译器不知道比较这两个值的方法,因为一个值与另一个值不同。是否确实没有将
字符串
int
进行比较?如果这是您的情况,您显然可以解析字符串,如下所示:

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!
    };

您确定这两个id都是相同的类型,int32而不是int16或其他。您确定
r.UserID
s.id
是相同的类型吗?它们都是SQL中的INT类型。它们在您的模型中都映射到int32了吗(好像您在使用实体框架)VS中的@klm9971让鼠标悬停在它们上面:这应该显示C#看到的类型,以防它们不同。我知道了。理查德的回答也是如此。谢谢:)