相关疑难解决方法(0)

C#8是否支持.NET Framework?

在Visual Studio 2019 Advanced Build设置中,C#8似乎不适用于.NET Framework项目,而仅适用于.NET Core 3.0项目(如下图所示):

在此处输入图片说明

C#8是否支持.NET Framework?

.net c# visual-studio .net-standard c#-8.0

52
推荐指数
2
解决办法
9569
查看次数

如何获取除C#中最后一个元素之外的所有数组元素

我有一个像这样的字符串数组.

string[] queries 数据多个字符串.

我想跳过元素中的最后一个字符串并取剩余的字符串.我想出来了

var remStrings = queries.Reverse().Skip(1).Take(queries.Length - 1);
Run Code Online (Sandbox Code Playgroud)

有更好的替代方案吗?

c# arrays

47
推荐指数
4
解决办法
4万
查看次数

List <T>的Last()扩展方法的性能如何?

我非常喜欢Last()并且会一直使用它List<T>.但是因为它似乎被定义了IEnumerable<T>,我想它首先枚举枚举 - 这应该是O(n)而不是O(1)直接索引a的最后一个元素List<T>.

标准(Linq)扩展方法是否意识到这一点?

C++中的STL通过迭代器和诸如此类的整个"继承树"来意识到这一点.

.net c# linq extension-methods

35
推荐指数
3
解决办法
8013
查看次数

使用LINQ删除最后一项

可能重复:
如何使用LINQ获取序列中除最后一个元素之外的所有元素?

看起来像是一个简单的LINQ任务(可能是它),但我无法弄清楚如何使用LINQ删除最后一项序列.使用Take并传递序列的长度 - 1当然可以正常工作.但是,在单行代码中链接多个LINQ时,这种方法似乎非常不方便.

IEnumerable<T> someList ....

// this works fine
var result = someList.Take(someList.Count() - 1);


// but what if I'm chaining LINQ ?
var result = someList.Where(...).DropLast().Select(...)......;

// Will I have to break this up?
var temp = someList.Where(...);
var result = temp.Take(temp.Count() - 1).Select(...)........;
Run Code Online (Sandbox Code Playgroud)

在Python中,我可以做seq [0:-1].我尝试将-1传递给Take方法,但它似乎没有做我需要的东西.

c# linq

34
推荐指数
3
解决办法
2万
查看次数

IEnumerable <T> .Last()是否针对List <T>进行了优化?

我有一个List<T>叫做LN个项目的东西.

L.Last(),IEnumerable<T>扩展方法,将在线性时间内运行所有N项?

或者内部优化是否具有恒定时间性能L[L.Count - 1]

.net c# c#-4.0

6
推荐指数
1
解决办法
633
查看次数

跳过数组中的最后一个元素并返回所有其他元素C#

我想返回所有元素,但最后一个元素.我看了一下可能使用Skip()方法,但感到困惑.有人可以帮帮我吗?

谢谢

c# arrays skip

4
推荐指数
1
解决办法
4933
查看次数

不要在linq C#中取得最新记录

我们都知道,它Skip()可以忽略收集开始时不需要的记录。

但是Skip()在收集结束时是否有记录的方法?

您如何不获取集合中的最后一条记录?

还是您必须通过 Take()

即下面的代码,

var collection = MyCollection

var listCount = collection.Count();

var takeList = collection.Take(listCount - 1);
Run Code Online (Sandbox Code Playgroud)

这是排除集合中最后一条记录的唯一方法吗?

c# linq

4
推荐指数
1
解决办法
280
查看次数

列表不继承IEnumerable扩展方法

我有以下代码创建一个扩展IEnumerable<T>:

//http://stackoverflow.com/a/1779135/1180926
public static IEnumerable<T> SkipLast<T>(this IEnumerable<T> source, int n)
{
  //.......
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将其应用于列表时:

public static void RemoveTwo(List<string> strList)
{
    strList = strList.SkipLast(2);
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.Generic.List'.存在显式转换(您是否错过了演员?)

但是List<T>继承IEnumerable<T>(src),所以不应该继承它的扩展方法吗?

c# inheritance extension-methods

2
推荐指数
1
解决办法
509
查看次数