使用 LINQ 返回单个结果

发布于 2024-10-13 01:52:21 字数 302 浏览 5 评论 0原文

我有一个查询

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

该查询返回一个 IEnumerable。我期待一个 'int'

帮助我修改我的 LINQ 查询

I have a query

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

This query returns an IEnumerable. I am expecting an 'int'

Help me modify my LINQ query

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

一袭水袖舞倾城 2024-10-20 01:52:21

如果您希望查询仅返回单个值,请使用 单一扩展方法。

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

请注意,如果存在 Single 将引发异常是没有价值的。如果这不是您想要的,请使用 SingleOrDefault

If you expect your query only to return a single value use the Single extension method.

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

Note that Single will throw an exception if there is no value. If that is not what you want, use SingleOrDefault.

永言不败 2024-10-20 01:52:21

您始终可以将其添加到查询的末尾:

.Single();

如果您的可枚举仅包含一个值,则将返回一个值,或者如果它包含一个以外的其他数量,则抛出异常。

You can always add this to the end of your query:

.Single();

That will return the one value if your enumerable contains only one, or throw an exception if it contains another amount than one.

〗斷ホ乔殘χμё〖 2024-10-20 01:52:21

在查询中添加 First() 子句:

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

如果没有结果,您可能需要使用 FirstOfDefault(),如 First()在这种情况下会抛出异常。

Add a First() clause to the query:

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

You may want to use FirstOfDefault() in case there are no results, as First() will throw an exception in such a case.

半寸时光 2024-10-20 01:52:21

只是 SingleOrDefault() 而不是 Select(),请记住,如果有多个结果,您将收到异常,您也可以使用FirstOrDefault()< /code>,所以它看起来像:

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

just SingleOrDefault() instead of Select(), keep in mind if there more than one result you will get an exception, you can also useFirstOrDefault(),so it will look like:

row.GetChildRows("EventCategoryRelation")
.Where(categoryRow => categoryRow["event_id"].ToString() == eventObject.EventId.ToString())
.SingleOrDefault(x => Int32.Parse(x["category_id"].ToString()))
淡忘如思 2024-10-20 01:52:21

根据您的数据添加 .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 (< code>FirstOrDefault(如果您不希望在没有返回数据的情况下出现异常)。多行将在 SingleSingleOrDefault 上引发异常。

Depending on your data add .FirstOrDefault, .SingleOrDefault(), .First() etc.

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

When you expect multiple rows, use First (FirstOrDefault if you dont want an exception if there is no data returned). Multiple rows will throw an exception on Single or SingleOrDefault.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文