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());
}
}
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.
Muszę rozwiązywać zadania na dwa sposoby za pomocą Linq i Lambdy
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ć.
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);
@katelx
Raczej dla estetyki :). Jak stosujesz zapytania do kolekcji to powinno sie LINQ uzywac:) bo jest imo czytelniej.
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).
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
).