gpt4 book ai didi

c# - 在 Linq 查询中用类型名称替换 var

转载 作者:行者123 更新时间:2023-11-30 23:02:30 25 4
gpt4 key购买 nike

我有以下代码:

List<string> myCars = new List<string>()
{ "Mercury Cougar", "Dodge Dart", "Ford Taurus SHO",
"Dodge Charger", "Chevrolet Blazer", "Dodge Neon" };

var dodges = from someCars in myCars
where someCars.Contains("Dodge")
orderby someCars descending
select someCars;

Console.WriteLine(dodges.GetType()); //System.Linq.OrderedEnumerable`2[System.String,System.String]

dodges.GetType()返回 CIL 语法中的完全限定名称。

如果我将它翻译成 C# 并用它来替换 var ,它不编译:

The type or namespace name 'OrderedEnumerable<,>' does not exist in the namespace 'System.Linq' (are you missing an assembly reference?)

System.Linq.OrderedEnumerable<string, string> dodges = from someCars in myCars
where someCars.Contains("Dodge")
orderby someCars descending
select someCars;

这是因为 OrderedEnumerable<string, string>不可用,只有 System.Linq.IOrderedEnumerable<string>可用。

为什么是OrderedEnumerable<string, string>不可用?

最佳答案

Why is OrderedEnumerable<string, string> not available

因为它是接口(interface)的“内部”实现。没有理由应该提供或记录它。使用 LINQ,您应该针对接口(interface)(IEnumerable<>IOrderedEnumerable<>IQueryable<> ...)进行编程

如果您看一下,所有 LINQ 方法都会返回一个派生自其中一个接口(interface)的内部类,并且通常它们可以返回多个不同类的实例,具体取决于输入。例如 Enumerable.Select() 可以返回 new SelectListIterator<TSource, TResult>SelectIListIterator<TSource, TResult>new SelectIPartitionIterator<TSource, TResult>或各种其他类别,具体取决于 IEnumerable<> 的类型输入。

关于c# - 在 Linq 查询中用类型名称替换 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50442736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com