如何在LINQ查询中检查属性的值是否为空。如果它不为null,那么将属性添加到XML元素?
for ex:First = AAA,Last = BBB,Suffix = Jr.然后 我的XML应该是这样的(因为我没有为Prefix传递任何值,所以它们不应该出现在XML中)
<Subject>
</Name First= "AAA" Last ="BBB" Suffix="Jr">
</Subject>
由于 BB
from i in DriverNames
select new XElement(Subject,
new XElement(Name,
new XAttribute("type", i.nameType),
new XAttribute(First, i.First.ToString().Trim().ToUpper()),
new XAttribute(last, i.Last.ToString().Trim().ToUpper()),
new XAttribute(Prefix, i.Prefix.ToString().Trim().ToUpper()),
new XAttribute(Suffix, i.Suffix.ToString().Trim().ToUpper())
) )
答案 0 :(得分:2)
您只需检查null即可。 XElement
接受一个params数组项,null是可以接受的,基本上会被丢弃。因此,请检查您的值是否为null并继续。一个例子:
class Foo
{
public string Bar { get; set; }
public string Baz { get; set; }
}
...
List<Foo> foos = new List<Foo>();
foos.Add(new Foo() { Bar = "Dog" });
foos.Add(new Foo() { Baz = "Cat" });
var query = from foo in foos
select new XElement("Foo",
!string.IsNullOrEmpty(foo.Bar) ? new XAttribute("Bar", foo.Bar) : null,
!string.IsNullOrEmpty(foo.Bar) ? new XAttribute("Baz", foo.Baz) : null);
生成的XML,你会看到它按你的意愿呈现每个元素。
<Foo Bar="Dog" />
<Foo Baz="Cat" />