Asp.net mvc 3 如何创建子ID列表

Asp.net mvc 3 如何创建子ID列表,asp.net-mvc-3,linq,tostring,Asp.net Mvc 3,Linq,Tostring,在我的控制器中,我有一个接收十进制值(id)的方法。 此方法的目标是从包含工作许可证的数据库表中恢复旧修订的列表。此表中的每条记录都有一个WorkPermitID作为主键,OldRevisionWorkPermitID引用以前版本的ID 我在收集子ID(旧版本)时没有问题,但它引发了一个异常,表明LINQ to实体无法识别.ToString()方法 我做错了什么?我知道我不需要转换为字符串(WorkPermitID在数据库中定义为数字),但我尝试了几种方法,但没有成功 public Action

在我的控制器中,我有一个接收十进制值(id)的方法。 此方法的目标是从包含工作许可证的数据库表中恢复旧修订的列表。此表中的每条记录都有一个WorkPermitID作为主键,OldRevisionWorkPermitID引用以前版本的ID

我在收集子ID(旧版本)时没有问题,但它引发了一个异常,表明LINQ to实体无法识别
.ToString()
方法

我做错了什么?我知道我不需要转换为字符串(WorkPermitID在数据库中定义为数字),但我尝试了几种方法,但没有成功

public ActionResult GetVersions(decimal id){


                    var model = new PermisosTrabajoModel();

                    List<string> ChildIDs = new List<string>();

                    var WP = OtWeb.WorkPermit.Single(q => q.WorkPermitID == id);

                    while (WP.OldRevisionWorkPermitID != null)
                    {
                        var child = WP.OldRevisionWorkPermitID;
                        ChildIDs.Add(child.ToString());
                        WP = OtWeb.WorkPermit.Single(q => q.WorkPermitID == child);
                    }


                    model.WPs = OtWeb.WorkPermit
                                .Where(q => q.DeptID == 1
                                && ChildIDs.Contains(q.WorkPermitID.ToString())).ToList();

return View (model);
}
公共操作结果GetVersions(十进制id){ var模型=新PermisosTrabajoModel(); List ChildIDs=新列表(); var WP=OtWeb.WorkPermit.Single(q=>q.WorkPermitID==id); while(WP.OldRevisionWorkPermitID!=null) { var child=WP.OldRevisionWorkPermitID; Add(child.ToString()); WP=OtWeb.WorkPermit.Single(q=>q.WorkPermitID==child); } model.WPs=OtWeb.WorkPermit .其中(q=>q.DeptID==1 &&childId.Contains(q.WorkPermitID.ToString()).ToList(); 返回视图(模型); }
解决方案1

如果两个字段都是十进制。。。不要使用
ToString()
,而要使用
十进制列表

var模型=新PermisosTrabajoModel()

而不是

q.WorkPermitID.ToString()

例如

谢谢你的回答!解决方案2就像一个符咒!第一个解决方案似乎更符合逻辑,但VS2010在
childId.Add(WP.OldRevisionWorkPermitID)下面加了下划线表示int和Generic List之间没有隐式转换
SqlFunctions.StringConvert(q.WorkPermitId)
q.WorkPermitID.ToString()