Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用字符串时linq中是否需要新关键字_C#_Linq - Fatal编程技术网

C# 使用字符串时linq中是否需要新关键字

C# 使用字符串时linq中是否需要新关键字,c#,linq,C#,Linq,如果n.tag是一个字符串,我需要使用new关键字 var listOfStates = from n in _storageStates select n.tag; 我想不会,因为string是内置类型,不是类,但我不确定。您不需要新关键字。您的第一个示例应按预期工作。否,除非您正在创建一个新对象(如果您正在选择多个字段),否则不需要: 否,new关键字不是必需的,因为您实际上没有创建新对象。new关键字可以在select语句中使用,但必须用作有效的表达

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

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

我想不会,因为string是内置类型,不是类,但我不确定。

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

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


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

// 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 };
new
关键字也可用于使用以下语法创建匿名类型:

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

你经常看到的是:

var listOfStates = from n in _storageStates
                   select new { n.Tag };
这将创建一个新的应用程序,这是一种有用的方法,可以将多个值以强类型但有点特别的方式分组在一起。可以使用以下单个值执行此操作:

var listOfStates = from n in _storageStates
                   select new { n.tag, n.foo };
但通常这会使结果更难处理,而不是更容易处理


请注意,匿名类型并不限于在LINQ中使用,尽管这可能是它们最常见的地方。有关详细信息,请参见前面的MSDN链接。

您通常在LINQ中使用new来创建匿名类型:

new
与LINQ无关。您是否同时尝试了这两种类型?这就澄清了你的问题。你有没有试过编译这两个例子?我不认为“如果我(不)使用X会有效”的问题是你需要在互联网上问的问题。。。在大多数情况下,只要试一下就可以了。我已经修复了这个示例,所以两个语句都可以编译。我只是想知道编译时的区别是什么。
var listOfStates = from n in _storageStates
                   select new { n.tag, n.foo };
var listOfStates = from n in _storageStates
                   select new { n.tag };