Lambda表达式 - 如果不存在则添加到集合中

时间:2009-12-01 21:35:45

标签: c# lambda

我刚开始学习lambda表达式。

是否可以进一步简化以下代码:

        Customer customer = Customers.FirstOrDefault(c => c.ID == 3);
        if (customer == null)
        {
            customer = new Customer() { FirstName = "Ben", LastName = "Foster", ID = 3 };
            Customers.Add(customer);
        }

        // do something with customer
        customer.CreateProfile();

基本上我想检查集合中是否存在对象。如果不是我想创建它,请将其添加到集合中,稍后再使用它。

由于 本

4 个答案:

答案 0 :(得分:5)

正如所写的那样,它似乎不再需要保持清晰和可读性。肯定有滥用lambdas和操作符??的方法可以将它们全部写在一行上,但最终它们只能用来模糊代码。

答案 1 :(得分:1)

这可能就像你能得到的那样“简单”,但就像帕维尔所说的那样,把它写在一条线上有点蠢。无论如何,这就是你好奇的。

Customer customer = Customers.FirstOrDefault(c => c.ID == 3).DefaultIfEmpty(new Customer() { FirstName = "Ben", LastName = "Foster", ID = 3 });
customer.CreateProfile();

答案 2 :(得分:1)

帕维尔是对的。顺便说一句,如果你在一个循环中这样做,你会想要在你的集合本身旁边使用一个HashSet或某种字典,其中Id作为其中的关键字,以便没有O (n²)复杂性。

答案 3 :(得分:1)

您可以使用Set实现而不是普通的集合。

http://www.surcombe.com/nhibernate-1.2/api/html/N_Iesi_Collections.htm

查看Iesi.Collections