0

質問があります

row.GetChildRows("EventCategoryRelation")
  .Where(categoryRow => categoryRow["event_id"].ToString() == eventObject.EventId.ToString())
  .Select(x => Int32.Parse(x["category_id"].ToString()))

このクエリは IEnumerable を返します。「int」を期待しています

LINQ クエリの変更を手伝ってください

4

5 に答える 5

2

クエリが単一の値のみを返すことが予想される場合は、Single拡張メソッドを使用します。

row.GetChildRows("EventCategoryRelation")
   .Where(categoryRow => categoryRow["event_id"].ToString() == eventObject.EventId.ToString())
   .Select(x => Int32.Parse(x["category_id"].ToString()))
   .Single();

値がない場合、Singleは例外をスローすることに注意してください。それが望ましくない場合は、SingleOrDefaultを使用してください。

于 2011-01-22T12:52:15.833 に答える
1

これをいつでもクエリの最後に追加できます。

.Single();

列挙型に 1 つしか含まれていない場合は 1 つの値が返され、1 以外の量が含まれている場合は例外がスローされます。

于 2011-01-22T12:52:24.700 に答える
0

SingleOrDefault()の代わりにSelect()、例外が発生する結果が複数ある場合は、 を使用することもできるため、次のようFirstOrDefault()になります。

row.GetChildRows("EventCategoryRelation")
.Where(categoryRow => categoryRow["event_id"].ToString() == eventObject.EventId.ToString())
.SingleOrDefault(x => Int32.Parse(x["category_id"].ToString()))
于 2011-01-22T12:57:33.200 に答える
0

データに応じて、、などを追加.FirstOrDefaultします.SingleOrDefault().First()

ow.GetChildRows("EventCategoryRelation")
  .Where(categoryRow => categoryRow["event_id"].ToString() == eventObject.EventId.ToString())
  .Select(x => Int32.Parse(x["category_id"].ToString())).FirstOrDefault()

複数の行が予想される場合は、 First (FirstOrDefaultデータが返されない場合に例外を発生させたくない場合) を使用します。Single複数の行は、またはで例外をスローしますSingleOrDefault

于 2011-01-22T12:52:58.570 に答える
0

First()クエリに句を追加します。

row.GetChildRows("EventCategoryRelation")
  .Where(categoryRow => categoryRow["event_id"].ToString() == eventObject.EventId.ToString())
  .Select(x => Int32.Parse(x["category_id"].ToString()))
  .First()

そのような場合に例外がスローFirstOfDefault()されるため、結果がない場合に使用することをお勧めします。First()

于 2011-01-22T12:53:00.643 に答える