想要比较两个ID,如果它们是相同的,只取这些行并发送它们,这样我就可以将它们打印出来。
public IList<tbl_user> getLastc()
{
var fk_id = (from m in dc.tbl_checkins orderby m.checkin_datetime descending select m.fk_user_id).Take(1);
var result = (from c in dc.tbl_users
where c.user_id.Equals(fk_id)
select c).ToList();
/*(from m in dc.tbl_users where m.user_id == fk_id select m).ToList();*/
return result;
}
错误: 类型
不支持比较运算符System.Linq.IQueryable
1[System.Nullable
1 [System.Int32]。
答案 0 :(得分:2)
在m.user_id == fk_id
中,其中一个变量是nullable int,所以如果你想比较它们呢
m.user_id!=null && user_id.Value==fk_id
首先检查value是否为null,然后将其值与其他值进行比较。可空值还有一个属性HasValue
,您可以使用它来确定变量是否具有值:
m.user_id.HasValue && user_id.Value==fk_id
注意:如果fk_id
可以为空,则用m.user_id
更改它(错误不说哪个是可以为空的)
编辑:
这就是它的适用方式:
(from m in
dc.tbl_users where fk_id.HasValue && fk_id.Value==m.user_id select m).ToList()
EDIT2:
var fk_ids = (from m in dc.tbl_checkins orderby m.checkin_datetime descending select m.fk_user_id).Where(x=>x.HasValue).Select(x=>x.Value);
(from m in
dc.tbl_users where fk_ids.Contains(m.user_id) select m).ToList()