相关疑难解决方法(0)

为什么IEnumerable上没有ForEach扩展方法?

受到另一个询问失踪问题的启发 Zip功能的:

为什么课堂上没有ForEach扩展方法Enumerable?还是在任 唯一获得ForEach方法的类是List<>.有没有理由错过(表演)?

.net c# vb.net extension-methods

368
推荐指数
10
解决办法
14万
查看次数

有没有像Forist for IList的方法?

可能重复:
LINQ等效于IEnumerable <T>的foreach

List<T>有一个调用的方法ForEach,它对每个元素执行传递的操作.

var names = new List<String>{ "Bruce", "Alfred", "Tim", "Richard" };

names.ForEach(p =>  { Console.WriteLine(p); });
Run Code Online (Sandbox Code Playgroud)

但是,如果names不是一个List<T>但是IList<T>,IList<T>没有像这样的方法ForEach.还有其他选择吗?

c#

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

List <T> .ForEach与自定义IEnumerable <T>扩展名

说我有一节课:

public class MyClass
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

和一个返回的Web服务方法 IEnumerable<MyClass>

Web服务的使用者定义了一些方法:

public void DoSomething(MyClass myClass)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

现在,消费者可以DoSomething通过两种方式调用webservice方法的结果:

var result = // web service call

foreach(var myClass in result)
{
   DoSomething(myClass);
}
Run Code Online (Sandbox Code Playgroud)

要么:

var result = // web service call

result.ToList().ForEach(DoSomething);
Run Code Online (Sandbox Code Playgroud)

毋庸置疑,我更喜欢第二种方式,因为它更短,更具表现力(一旦你习惯了我的语法).

现在,Web服务方法只公开一个IEnumerable<MyClass>,但它实际上返回一个List<MyClass>(AFAIK)意味着实际的序列化对象仍然是一个List<T>.但是,我发现(使用反射器)Linq方法ToList()制作了所有对象的副本,IEnumerable<T>而不管实际的运行时类型(在我看来,它可能只是将参数转换为a,List<T>如果它已经是一个).

这显然有一些性能开销,特别是对于大型列表(或大型对象列表).

那么我该怎么做才能克服这个问题,为什么ForEachLinq中没有方法呢?

顺便说一句,他的问题与这个问题含糊不清.

c# linq extension-methods

4
推荐指数
2
解决办法
2745
查看次数

通过IEnumerable特性执行Action <T>?

我有这个代码:

 int[] g = new int[3] { 1, 2, 3 };
 g.ToList().ForEach(f=>Console.Write(f));
Run Code Online (Sandbox Code Playgroud)

对于数组中的每个项目,我想执行Action....

int[]已经实施Ienumerable.

我想执行一个没有" ToList()" 的动作

是否有任何其他溶液(用一个代码行)(使用其而无需toList?即做IEnumerable特性)

c# linq action .net-4.0

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

为什么 ForEach 扩展方法在 C# 中的 ObservableCollections 中不可用

可能重复:
为什么 IEnumerable 接口上没有 ForEach 扩展方法?

为什么 ForEach 扩展方法在 ObservableCollections 类中不可用,而在 List 中可用?

c# generics

0
推荐指数
1
解决办法
3612
查看次数

标签 统计

c# ×5

extension-methods ×2

linq ×2

.net ×1

.net-4.0 ×1

action ×1

generics ×1

vb.net ×1