相关疑难解决方法(0)

使用LINQ更新集合中的所有对象

有没有办法使用LINQ执行以下操作?

foreach (var c in collection)
{
    c.PropertyToSet = value;
}
Run Code Online (Sandbox Code Playgroud)

为了澄清,我想迭代集合中的每个对象,然后更新每个对象的属性.

我的用例是我在博客文章中有一堆评论,我想在博客文章中迭代每个评论,并将博客帖子上的日期时间设置为+10小时.我可以在SQL中完成它,但我想将它保留在业务层中.

.net c# linq foreach

460
推荐指数
10
解决办法
46万
查看次数

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

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

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

.net c# vb.net extension-methods

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

Linq风格"For Each"

可能重复:
Linq相当于IEnumerable的foreach

是否有"For each"操作的Linq样式语法?

例如,将基于一个集合的值添加到另一个集合,已存在的集合:

IEnumerable<int> someValues = new List<int>() { 1, 2, 3 };

IList<int> list = new List<int>();

someValues.ForEach(x => list.Add(x + 1));
Run Code Online (Sandbox Code Playgroud)

代替

foreach(int value in someValues)
{
  list.Add(value + 1);
}
Run Code Online (Sandbox Code Playgroud)

.net c# linq foreach

182
推荐指数
5
解决办法
36万
查看次数

通过LINQ将函数应用于集合的所有元素

我最近开始使用LINQ并且令人惊叹.我想知道LINQ是否允许我将函数 - 任何函数 - 应用于集合的所有元素,而不使用foreach.像python lambda函数之类的东西.

例如,如果我有一个int列表,我可以使用LINQ为每个元素添加一个常量

如果我有一个数据库表,我可以使用LINQ为所有记录设置一个字段.

我正在使用C#

.net c# linq

127
推荐指数
6
解决办法
16万
查看次数

为通用c#集合中的每个值调用一个函数

我在List集合中有一组整数值.我想为集合中的每个值调用一个函数,其中一个函数的参数是一个集合值.如果没有在foreach循环中执行此操作...有没有办法用lambda/linq表达式完成此操作?

像...这样的东西myList.Where(p => myFunc(p.Value));

提前谢谢,-s

c# linq generics lambda

51
推荐指数
6
解决办法
8万
查看次数

使用Foreach子句的Lambda表达式

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

编辑

作为参考,这里是eric在评论中引用的博客文章

http://blogs.msdn.com/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx

我想更多的好奇心,但C#规范Savants的一个...

为什么ForEach()子句在IQueryable/IEnumerable结果集上不起作用(或不可用)...

你必须首先转换你的结果ToList()或ToArray()大概是对C#迭代IEnumerables Vs的方式的技术限制.列表......是否与IEnumerables/IQuerable Collections的延迟执行有关.例如

var userAgentStrings = uasdc.UserAgentStrings
    .Where<UserAgentString>(p => p.DeviceID == 0 && 
                            !p.UserAgentString1.Contains("msie"));
//WORKS            
userAgentStrings.ToList().ForEach(uas => ProcessUserAgentString(uas));         

//WORKS
Array.ForEach(userAgentStrings.ToArray(), uas => ProcessUserAgentString(uas));

//Doesn't WORK
userAgentStrings.ForEach(uas => ProcessUserAgentString(uas));
Run Code Online (Sandbox Code Playgroud)

c# foreach lambda .net-3.5

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

C#或滑动窗口枚举器中的成对迭代

如果我有一个IEnumerable像:

string[] items = new string[] { "a", "b", "c", "d" };
Run Code Online (Sandbox Code Playgroud)

我想循环通过所有连续项目(大小为2的滑动窗口).这将是

("a","b"), ("b", "c"), ("c", "d")
Run Code Online (Sandbox Code Playgroud)

我的解决方案就是这样

    public static IEnumerable<Pair<T, T>> Pairs(IEnumerable<T> enumerable) {
        IEnumerator<T> e = enumerable.GetEnumerator(); e.MoveNext();
        T current = e.Current;
        while ( e.MoveNext() ) {
            T next = e.Current;
            yield return new Pair<T, T>(current, next);
            current = next;
        }
    }

 // used like this :
 foreach (Pair<String,String> pair in IterTools<String>.Pairs(items)) {
    System.Out.PrintLine("{0}, {1}", pair.First, pair.Second)
 }
Run Code Online (Sandbox Code Playgroud)

当我编写这段代码时,我想知道.NET框架中是否已经存在执行相同操作的函数,并且它不仅适用于对,而且适用于任何大小的元组.恕我直言应该有一个很好的方法来做这种滑动窗口操作.

我使用C#2.0,我可以想象使用C#3.0(w/LINQ)有更多(更好)的方法来做到这一点,但我主要对C#2.0解决方案感兴趣.不过,我也很欣赏C#3.0解决方案.

.net c# ienumerable iterator

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

List <T> .ForEach()方法消失了吗?

我最近开始涉足Windows 8地铁,发现我的一个老朋友似乎已经失踪了.

我倾向于使用该.ForEach()方法而不是使用传统的foreach()构造,并且我很快意识到这种方法不可用.例如,此代码不会在metro应用程序下编译:

var list = new List<string>();

list.ForEach(System.Diagnostics.Debug.WriteLine);
Run Code Online (Sandbox Code Playgroud)

我已经搜索过,看看我是否能找到任何关于此的讨论,但是无法进行.我只是在钝,还是它真的消失了?

.net c# windows-8 windows-store-apps

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

C#:yield return range/collection

我使用了很多yield return关键字,但是当我想要添加一个范围时,我发现它缺乏IEnumerable.这是我想做的一个简单示例:

IEnumerable<string> SomeRecursiveMethod()
{
    // some code 
    // ...
    yield return SomeRecursiveMethod();
}
Run Code Online (Sandbox Code Playgroud)

当然这会导致错误,可以通过简单的循环来解决.有一个更好的方法吗?一个循环感觉有点笨重.

.net c# yield

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

有没有像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万
查看次数