我有两张桌子:
实体
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子句中某个表达式的类型不正确。调用“加入”时类型推断失败。
这是什么意思?有人可以帮我这个。谢谢!
答案 0 :(得分:1)
基本上,您收到的错误告诉您编译器不知道比较这两个值的方法,因为一个值与另一个值不同。您确定没有将string
与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!
};
答案 1 :(得分:0)
我打赌你的一个连接条件的类型与另一个的类型不匹配。
join子句中某个表达式的类型不正确。
确保它们与您的实体映射匹配。
在您的帖子中,您将表列为具有“ID”列,但在连接中,一个是ID,另一个是UserID。您确定加入了正确的列吗?