如果XElement上的XAttribute不存在,是否有更简单/更好的方法来返回默认值?:
我试图以更短的方式写这个(因为它是一个双线):
var a = root.Attribute("testAttribute");
var v = (a == null ? "" : a.Value);
Run Code Online (Sandbox Code Playgroud)
我的方法:通过扩展方法:
public static XAttribute Attribute(this XElement obj, string name, string defaultValue)
{
if (obj.Attribute(name) == null)
return new XAttribute(name, defaultValue);
return obj.Attribute(name);
}
var v = root.Attribute("testAttribute", "").Value;
Run Code Online (Sandbox Code Playgroud)
这会产生任何副作用,如大规模的负面速度影响吗?有没有更好的方法呢?
我有一个数据结构
class BasketCondition
{
public List<Sku> SkuList { get; set; }
public string InnerBoolean { get; set; }
}
class Sku
{
public string SkuName { get; set; }
public int Quantity { get; set; }
public int PurchaseType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在让我们为它填充一些价值
var skuList = new List<Sku>();
skuList.Add(new Sku { SkuName = "TSBECE-AA", Quantity = 2, PurchaseType = 3 });
skuList.Add(new Sku { SkuName = "TSEECE-AA", Quantity = 5, PurchaseType = 3 });
BasketCondition bc = new …Run Code Online (Sandbox Code Playgroud) 我有一个小问题,我认为这是一个不用脑子......但是唉......
我有一些xml,我想要做的就是xml:space="preserve"使用c#添加到根元素.
我试过这个:
var rootElem = xDoc.Root; // XDocument
rootElem.SetAttributeValue("{xml}space", "preserve");
Run Code Online (Sandbox Code Playgroud)
结果是:
<ProjectDetails xmlns="http://site/ppm" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" p3:space="preserve" xmlns:p3="xml">
Run Code Online (Sandbox Code Playgroud)
我认为这相当于
<ProjectDetails xmlns="http://site/ppm" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:space="preserve">
Run Code Online (Sandbox Code Playgroud)
但由于这xml:space是一个特殊的属性,我有点怀疑.
所以:
它们是一样的吗?
有没有办法可以以"干净"的方式将其添加到文档中?
在我的C#代码库中,我有一个XMLDocument表单:
<A>
<B>
<C mlns='blabla' yz='blablaaa'> Hi </C>
<D mlns='blabla' yz='blablaaa'> How </D>
<E mlns='blabla' yz='blablaaa'> Are </E>
<F mlns='blabla' yz='blablaaa'> You </F>
</B>
<B>
<C mlns='blabla' yz='blablaaa'> I </C>
<D mlns='blabla' yz='blablaaa'> am</D>
<E mlns='blabla' yz='blablaaa'> fine</E>
<F mlns='blabla' yz='blablaaa'> thanks</F>
</B>
</A>
Run Code Online (Sandbox Code Playgroud)
使用Linq-to-XML或其他方法,我想删除元素包含的所有元素的mlns和yz属性B.
实现它的最佳方法是什么?
在我们的生产代码中,我看到使用显式XName.Get调用读取XML属性:
var name = element.Attribute (XName.Get ("name"));
Run Code Online (Sandbox Code Playgroud)
我曾经总是将一个字符串传递给Attribute:
var name = element.Attribute ("name");
Run Code Online (Sandbox Code Playgroud)
这更具可读性,但我想知道逻辑或性能是否有任何差异.
xattribute ×5
c# ×4
linq-to-xml ×4
linq ×2
xelement ×2
.net ×1
c#-4.0 ×1
xmldocument ×1
xname ×1