我的查询如下:
var resOut = from p in xRefs
select new FileUploadRecord
{
group = "",
progress = xRef.Progress,
};
这将无法编译,因为它将group
视为linq组关键字,而不是我的类的成员。我只是重命名该字段,但它是数据合同的一部分,无法更改。
如果没有传统的for循环,有没有办法做到这一点?
答案 0 :(得分:4)
将@
符号添加到group
属性名称的开头,这样您就可以使用保留/上下文关键字
var resOut = from p in xRefs
select new FileUploadRecord
{
@group = "",
...
}
答案 1 :(得分:2)
尝试
var resOut = from p in xRefs
select new FileUploadRecord
{
@group = "",
progress = xRef.Progress,
};
您可以使用@
前缀来转义保留字。
答案 2 :(得分:1)
不要使用查询语法,请使用方法语法:
xRefs.Select(p => new FileUploadRecord
{
group = "",
progress = xRef.Progress,
});
group
关键字是一个上下文关键字,在查询语法语句中仅被视为关键字。
答案 3 :(得分:1)
我不知道为什么指定@的其他答案都是downvoted。您可以使用@来定义文字标识符。
var resOut = from p in xRefs
select new FileUploadRecord
{
@group = "",
progress = xRef.Progress,
};
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/x53a06bb.aspx的顶部。
答案 4 :(得分:1)
鲜为人知的事实。
除了 verbatin标识符(以@
为前缀的那些标识符),Unicode转义符作为标识符被允许。
所以,这也可行:
var resOut = from p in xRefs
select new FileUploadRecord
{
\u0067roup = "",
progress = xRef.Progress,
};
有关详细信息,请参阅C# Language Specification上的第2.4.2节。