【问题标题】:How to build a LINQ to XML query with a conditional selection如何使用条件选择构建 LINQ to XML 查询
【发布时间】:2011-12-26 08:06:40
【问题描述】:

xml 元素是可变的,具体取决于某些条件。我需要根据其他元素的值,用不同的元素初始化一个实例。

var result = (from name in names
   select new MyName
   {
      name.First  = name.Type = Fracais ? name.PreNom : name.First,
      name.Last 
   }

有什么想法吗?

【问题讨论】:

  • 您能否展示一个 XML 示例来说明您遇到的问题?
  • 你能详细描述一下你到底想要什么吗?您发布的代码有什么问题? (除了它应该是name.Type == Fracais。)
  • 如果您可以发布其他相关的类和常量/枚举,我们可以提供更准确的答案,因为看起来您只是有一些错别字:)
  • 这个 Linq to XML 怎么样?

标签: c# xml linq conditional


【解决方案1】:

你所拥有的几乎是正确的。我不得不猜测枚举和成员,因为您不提供其他类:

   var result = from name in names
                 select new Person()
                   {
                      First = name.Type == PersonType.Fracais ? name.PreNom : name.First,
                      Last = name.Last
                   };

在 linq 查询中几乎可以有任何表达式,包括函数调用,因此测试值和动态改变它们是完全可以接受的。

【讨论】:

  • +1:对问题的一个小解释会提升这个答案。
  • 谢谢。有人告诉我这不起作用并且没有足够的怀疑,所以我从未尝试过。 1 公斤,请原谅?
【解决方案2】:

这个怎么样?作为一个毫无意义的选择。

var result = names.where(name => name.Type == Francais).Select(name =>
                                           name.PreNom, name.Last).Union()
    names.where(name => name.Type != Francais).Select(name.First, name.Last);

【讨论】:

  • 原件没有任何问题(除了元素的命名和拼写错误......据我所知,== :))。为什么用 Union 让阅读变得更难?
  • 这是一个很大的解决方法。将= 更改为== 也可以:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多