-1

我正在尝试通过 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);

但是当我尝试编辑所选行的位置时,似乎我做错了:

itemPos.Position = itemPos.Position - 1;

我原以为那条线会将当前位置减少 1。
我对这一切还是很陌生

4

2 回答 2

1

您的 select 语句将返回一个IEnumerable<Item>,而您指定的类型是单个Item。您可以尝试以下方法。

 var itemPos = d.Items.Where(row => row.Position > itemID.Position);

var用于隐式类型,或IEnumerable<Item>用于显式类型,因为您是根据条件进行选择的,您可以使用Where子句而不是Select

于 2012-08-16T12:18:17.330 回答
0
IEnumerable<Item> itemPos = d.Items.Select(row => row.Position > itemID.Position);

但最好的方法是使用var.

于 2012-08-16T12:18:42.643 回答