C# 将fk_id与linq中的id进行比较
想要比较两个ID,如果它们相同,只取这些行并发送它们,这样我就可以打印出来C# 将fk_id与linq中的id进行比较,c#,asp.net,linq,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
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.IQueryable1[System.Nullable1[System.Int32]] 在m.user_id==fk_id中,其中一个变量是可为null的int,因此如果要比较它们,请执行以下操作
m.user_id!=null && user_id.Value==fk_id
它将首先检查值是否不为null,然后将其值与其他值进行比较。可为Null的值还有一个属性HasValue,您可以使用它来确定变量是否有值:
m.user_id.HasValue && user_id.Value==fk_id
注意:如果fk_id可为null int,则使用m.user_id更改它。错误并没有说明哪个可为null int
编辑:
这就是它的适用范围:
(from m in
dc.tbl_users where fk_id.HasValue && fk_id.Value==m.user_id select m).ToList()
编辑2:
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()
@如果有的话:“你是那种类型的人”before@w0lf错误后附加了一些非英语文本,我将其删除。类型,-Google Translator不支持比较运算符。这是丢失错误的翻译版本。@user3060452哪个值可以为空?也许fk_id是可以为空的,你应该像我在回答中建议的那样反转它?查看我的编辑我需要将其强制转换为int var fk_id=from m in dc.tbl_checkins orderby m.checkin_datetime降序选择m.fk_user_id.Take1;但是怎么做?@user3060452 var fk_id=从dc.tbl_checkins orderby m.checkin_datetime降序选择m.fk_user_id;用它,汉克斯,你帮了我很多@用户3060452没问题: