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#看到的类型,以防它们不同。我知道了。理查德的回答也是如此。谢谢:)