使用字符串时,linq 中是否需要 new 关键字

本文关键字:是否 new 关键字 linq 字符串 | 更新日期: 2023-09-27 18:19:43

var listOfStates = from n in _storageStates
                   select n.tag;

如果 n.tag 是一个字符串,我需要使用 new 关键字吗?

var listOfStates = from n in _storageStates
                   select new {n.tag};

我认为不会,因为字符串是内置类型而不是类,但我不确定。

使用字符串时,linq 中是否需要 new 关键字

你经常看到的是这样的:

var listOfStates = from n in _storageStates
                   select new { n.tag, n.foo };

这将创建一个匿名类型,这是一种以强类型但有点临时的方式将多个值组合在一起的有用方法。您可以使用单个值来执行此操作,如下所示:

var listOfStates = from n in _storageStates
                   select new { n.tag };

但通常这使得结果更处理而不是更容易。

请注意,匿名类型不限于在 LINQ 中使用,尽管这可能是它们最常遇到的地方。有关详细信息,请按照前面的 MSDN 链接进行操作。

你不需要 new 关键字。您的第一个示例应按预期工作。

不,new 关键字不是必需的,因为您实际上并没有创建新对象。 new 关键字可以在 select 语句中使用,但必须用作有效表达式。 示例如下:

var listOfStates = from n in _storageStates
                   select new State(n.Tag);

new 关键字还可用于使用以下语法创建匿名类型:

var listOfStates = from n in _storageStates
                   select new { n.Tag };

否,除非您要创建新对象(如果要选择多个字段(,否则不需要:

// single field
var listOfStates = from n in _storageStates
                   select n.tag;
// multiple fields require, at least, an anonymous type
var listOfStatesAndCapitals = from n in _storageStates
                              select new { n.tag, n.capital };

通常在 LINQ 中使用 new 来创建匿名类型: http://msdn.microsoft.com/en-us/library/bb397696.aspx