【问题标题】:Find multiple element and set an attribute depending on the result查找多个元素并根据结果设置属性
【发布时间】:2013-12-08 17:45:19
【问题描述】:

我有一个List<MyObject> _users,我想找到所有用户名以“toto”开头的用户,并为他们设置一个属性,bool excepted = true。。 p>

我其实有这个代码:

_users.FindAll(z => z.userName.StartWith("toto") == true && location == "London")

我想达到这样的目标:

_users.FindAll(z => z.userName.StartWith("toto") == true && location == "London").Cast<MyObject>().excepted = true;

Cast 知道我当前正在使用哪种对象,然后设置我的属性....这段代码显然根本不起作用,但我不知道我该怎么做以及是否可以可以这样做:(

谢谢

【问题讨论】:

    标签: c# linq set


    【解决方案1】:
    _users.FindAll(z => z.userName.StartWith("toto") == true && location == "London")
          .ForEach(x=>x.excepted =true)
    

    【讨论】:

    • 你给了我高潮!啊,非常感谢! :D 我需要对这类查询进行更多练习 :)
    【解决方案2】:
    _users.Where(x => x.userName.Contains("toto")).ToList().ForEach(y => y.excepted = true);
    

    【讨论】:

    • 这些结果之间的最佳优化是什么?
    • stackoverflow.com/questions/1531702/…,我发现了一个关于优化的很酷的话题:)
    • 答案是有效的,但无论如何它都不会优化代码。ToList 会创建一个List&lt;T&gt;,因此与FindAll 完全相同。要真正优化它,请使用 foreach 循环超过_users.Where 而不使用ToList(尽管它不会产生任何显着差异)
    猜你喜欢
    • 2011-12-16
    • 2017-04-10
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多