-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>WhereSelect

于 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 に答える