C# 比较数据库值时的显式转换

C# 比较数据库值时的显式转换,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我试图按ID选择数据库中的一行,然后选择“位置”值高于按ID选择的行的所有行,如下所示: int id = Convert.ToInt32(Request.QueryString["id"]); MyDataContext d = new MyDataContext Item itemID = d.Items.Single(row => row.ID == id); Item itemPos = d.Items.Select(row => row.Position > item

我试图按ID选择数据库中的一行,然后选择“位置”值高于按ID选择的行的所有行,如下所示:

int id = Convert.ToInt32(Request.QueryString["id"]);
MyDataContext d = new MyDataContext
Item itemID = d.Items.Single(row => row.ID == id);
Item itemPos = d.Items.Select(row => row.Position > itemID.Position);
int id = Convert.ToInt32(Request.QueryString["id"]);
MyDataContext d = new MyDataContext
Item itemID = d.Items.Single(row => row.ID == id);
var itemPos = d.Items.Where(row => row.Position > itemID.Position);
底线是存在显式转换,但我似乎无法修复它

阅读了目前为止的答案后,代码现在看起来如下所示:

int id = Convert.ToInt32(Request.QueryString["id"]);
MyDataContext d = new MyDataContext
Item itemID = d.Items.Single(row => row.ID == id);
Item itemPos = d.Items.Select(row => row.Position > itemID.Position);
int id = Convert.ToInt32(Request.QueryString["id"]);
MyDataContext d = new MyDataContext
Item itemID = d.Items.Single(row => row.ID == id);
var itemPos = d.Items.Where(row => row.Position > itemID.Position);
但是,当我尝试编辑选定行的位置时,似乎我做得不对:

itemPos.Position = itemPos.Position - 1;
我本以为该行会将当前头寸减少1。

我对这一切还是新手

您的select语句将返回一个
IEnumerable
,而您指定的类型是针对单个
。你可以试试下面的方法

 var itemPos = d.Items.Where(row => row.Position > itemID.Position);
用于隐式类型,或使用
IEnumerable
用于显式类型,因为您是根据条件选择的,所以可以使用
Where
子句而不是
Select
IEnumerable itemPos=d.Items.Select(行=>row.Position>itemID.Position);
IEnumerable<Item> itemPos = d.Items.Select(row => row.Position > itemID.Position);

但是最好的方法是使用
var

谢谢,这会选择所有排名较高的行还是只选择它找到的第一行?@KarlHumphries,我错过了阅读问题,检查编辑过的答案谢谢,我已经编辑了问题以包含编辑过的代码,这仍然给我留下了一个问题problem@KarlHumphries,在编辑的问题中,您试图访问项目的属性
位置
,其中,由于itemPos是一个集合,您无法访问这样的属性,您可以从集合中选择一个项目,然后访问该属性