我正在尝试通过其ID在我的数据库中选择一行,然后选择“Position”值高于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);
但是当我尝试编辑所选行的位置时,似乎我做错了:
itemPos.Position = itemPos.Position - 1;
我原本期望该行将当前位置减少1 我还是新手
答案 0 :(得分:1)
您的select语句将返回IEnumerable<Item>
,而您指定的类型是单Item
。你可以尝试以下方法。
var itemPos = d.Items.Where(row => row.Position > itemID.Position);
使用var作为隐式类型,或使用IEnumerable<Item>
作为显式类型,因为您根据条件选择可以使用Where
子句而不是Select
答案 1 :(得分:0)
IEnumerable<Item> itemPos = d.Items.Select(row => row.Position > itemID.Position);
但最好的方法是使用var
。