Linq查询错误类成员为组关键字

时间:2014-02-28 15:18:06

标签: c# linq

我的查询如下:

var resOut = from p in xRefs
            select new FileUploadRecord
            {
                group = "",
                progress = xRef.Progress,

            };

这将无法编译,因为它将group视为linq组关键字,而不是我的类的成员。我只是重命名该字段,但它是数据合同的一部分,无法更改。

如果没有传统的for循环,有没有办法做到这一点?

5 个答案:

答案 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节。

相关问题