这可能是一个简单的错误,但是我在阅读XML
上下文中以@开头的字符串参数时遇到了问题。
例如:
program.exe file.xml @attribute
@attribute
字符串是我需要在联接中检查的属性:
var testjoin = from x in tree1 join y in tree2 on (string)x.Attribute(args[2]) equals (string)y.Attribute("Order") select x
但是当我尝试将其直接传递给x.Attribute()
有人能帮我解决这个问题吗?
编辑:
文件的XML
内容无关紧要。这是出于分配目的,但它是一个简单的客户文件,我正在与Orders文件进行比较。
文件的标题是
<?xml version="1.0" encoding="utf-8"?>
@attribute
字面上是@CustomerID
,我无法改变它如何传递到我的程序中。我可以改变我处理它的方式,所以如果有另一种方法可以用来执行连接传递作为属性,我可以改变它。
答案 0 :(得分:1)
A "C# string literal&#34;和#34;命令行参数&#34;生活在不同的世界,他们彼此无关。
C#编译器在编译时评估(逐字或常规)字符串文字。 &#39; @&#39; sign是一个转义字符,用于逐字字符串文字,(a.o。)告诉编译器按字面意思处理某些字符而不是转义字符。例如。 @"hello\tworld"
将编译成一个字符串,其中包含一个实际的反斜杠,后跟t
,而"hello\tworld"
会将\t
转换为一个标签。
命令行参数在运行时传入,因此不能将其视为字符串文字。这使你有责任处理&#39; @&#39;代码中的字符。