Zamiana zapytania linq na wyrazenie lambda

0
foreach (Book book in list1)
            {
                var query =
                from item in list2
                where book < item
                select item;

                foreach (var item in query)
                {
                    Console.WriteLine(book.ToString() + " < " + item.ToString());
                }
            }
 
0

Ale po co sobie życie utrudniać? Po to jest LINQ, zeby lambd nie używać. Pod spodem to jest lambda wiec mozesz sobe sprawdzić w kodzie IL.

http://stackoverflow.com/questions/3914611/comparision-linq-vs-lambda-expression

Moze jest o kilka ms szybciej bo kompilator tego nie 'konwertuje' ale imo bez sensu.

0

Muszę rozwiązywać zadania na dwa sposoby za pomocą Linq i Lambdy

0

IMO lambda jest czytelniejsza

var query = list2.Where(i => book < i);

A nie wiem czy by się tego wszystkiego nie dało jakąś metodą z Enumerable rozwalić.

3

cos takiego?

list1.Join(list2, book => book, book => book, (b1, b2) => new {Book1=b1, Book2=b2})
.Where(b => b.Book1<b.Book2)
.Select(b=>b.Book1+" < " + b.Book2)
.ToList()
.ForEach(Console.WriteLine);
0

@katelx
Raczej dla estetyki :). Jak stosujesz zapytania do kolekcji to powinno sie LINQ uzywac:) bo jest imo czytelniej.

2

byc moze dla kogos linq jest czytelniejsze, jednak do tej pory nie spotkalam sie z takim przypadkiem w moim kodzie. na review tez zazwyczaj nie przepuszczam kodu w linq, bo do pojedynczych operacji jest po prostu za dlugi (w porownaniu do method chain).

3
Sangui23 napisał(a):

Jak stosujesz zapytania do kolekcji to powinno sie LINQ uzywac:) bo jest imo czytelniej.

Powinno się, bo Twoim zdaniem jest czytelniej? Mocny argument. ;)

Ja osobiście nienawidzę wyrażeń, metody są dla mnie zazwyczaj znacznie czytelniejsze. Wyjątkiem są joiny i deklarowanie zmiennej lokalnej w wyrażeniu (czyli używanielet).

1 użytkowników online, w tym zalogowanych: 0, gości: 1