在linq中比较fk_id和id

时间:2013-12-03 07:50:51

标签: c# asp.net linq

想要比较两个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]。

1 个答案:

答案 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()