C# 我从Enumerable返回了哪个显式类型。选择
我从Microsoft获得了以下代码示例(http://msdn.microsoft.com/en-us/library/bb534869.aspx): 这很有效,但我不明白的是什么类型的查询 我试图从调试器中获取信息,但无法声明它并显式地写下来。我试过几种变体,例如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
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
?它仍然是强类型的。。。“类型名称由编译器生成,在源代码级别不可用。每个属性的类型由编译器推断。”