Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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# 我从Enumerable返回了哪个显式类型。选择_C#_Linq - Fatal编程技术网

C# 我从Enumerable返回了哪个显式类型。选择

C# 我从Enumerable返回了哪个显式类型。选择,c#,linq,C#,Linq,我从Microsoft获得了以下代码示例(http://msdn.microsoft.com/en-us/library/bb534869.aspx): 这很有效,但我不明白的是什么类型的查询 我试图从调试器中获取信息,但无法声明它并显式地写下来。我试过几种变体,例如 IEnumerable<int,string> query = fruits.Select((fruit, index) => new {Substring = fruit.Substring(0, ind

我从Microsoft获得了以下代码示例(http://msdn.microsoft.com/en-us/library/bb534869.aspx):

这很有效,但我不明白的是什么类型的查询

我试图从调试器中获取信息,但无法声明它并显式地写下来。我试过几种变体,例如

IEnumerable<int,string> query = fruits.Select((fruit, index) 
  => new {Substring = fruit.Substring(0, index)});
IEnumerable查询=水果。选择((水果,索引)
=>新的{Substring=fruit.Substring(0,index)});

但这确实会产生影响。如何定义查询类型而不使用var?

您不能指定类型,因为它是匿名的。请在此处阅读更多信息:

您不能指定类型,因为它是匿名的。请在此处阅读更多信息:

当您使用没有特定类型的新运算符时,编译器会创建一个无法显式引用的匿名类型。如果您希望能够引用它,那么您应该创建自己的类以显式返回,或者返回预先存在的类。尝试:

IEnumerable<string> query = fruits.Select((fruit, index) => fruit.Substring(0, index));
IEnumerable query=fruits.Select((fruit,index)=>fruit.Substring(0,index));

当您在没有特定类型的情况下使用新运算符时,编译器会创建一个无法显式引用的匿名类型。如果您希望能够引用它,那么您应该创建自己的类以显式返回,或者返回预先存在的类。尝试:

IEnumerable<string> query = fruits.Select((fruit, index) => fruit.Substring(0, index));
IEnumerable query=fruits.Select((fruit,index)=>fruit.Substring(0,index));

为了完整起见,如果您真的必须指定类型(并且确实没有必要指定-匿名类型也是类型安全的),那么您必须首先声明一个类/结构

public class FruitySubstringyThingy
{
    public string Substring{get;set;}
}
在投影中使用它

IEnumerable<FruitySubstringyThingy> items
  = fruits.Select((fruit,index) => new FruitySubstringyThingy{Substring = fruit.Substring(0, index)});
IEnumerable项
=水果。选择((水果,索引)=>新水果子串{Substring=水果。子串(0,索引)});

为了完整起见,如果您真的必须指定类型(并且确实没有必要指定-匿名类型也是类型安全的),那么您必须首先声明一个类/结构

public class FruitySubstringyThingy
{
    public string Substring{get;set;}
}
在投影中使用它

IEnumerable<FruitySubstringyThingy> items
  = fruits.Select((fruit,index) => new FruitySubstringyThingy{Substring = fruit.Substring(0, index)});
IEnumerable项
=水果。选择((水果,索引)=>新水果子串{Substring=水果。子串(0,索引)});

为什么不想使用
var
?它仍然是强类型的。。。“类型名称由编译器生成,在源代码级别不可用。每个属性的类型由编译器推断。”为什么不使用
var
?它仍然是强类型的。。。“类型名称由编译器生成,在源代码级别不可用。每个属性的类型由编译器推断。”