새 프로젝트를 시작할 때 참조를 제거하지 않아도 Linq를 사용하지 않을 것입니다. 그래도 람다는 유용 해 보인다. Linq가 타기를 위해 태그를 지정해야한다면 lambdas를 사용하는 습관을 가지지 않을 것입니다.lambda는 Linq없이 사용할 수 있습니까?
미리 감사드립니다.
새 프로젝트를 시작할 때 참조를 제거하지 않아도 Linq를 사용하지 않을 것입니다. 그래도 람다는 유용 해 보인다. Linq가 타기를 위해 태그를 지정해야한다면 lambdas를 사용하는 습관을 가지지 않을 것입니다.lambda는 Linq없이 사용할 수 있습니까?
미리 감사드립니다.
언제든지 람다를 사용할 수 있습니다. 그것들은 새로운 언어 기능입니다. Linq가 사용하지만 linq를 사용할 필요는 없습니다. 다만 익명 메소드와 같은
Action blah =() => { System.Console.WriteLine("Hello World!"); }
blah(); // will write Hello World! to the console
아니, 당신이 사용할 수있는 람다는 더 LINQ이 필요하지 않습니다.
람다 식은 LINQ와 완전히 독립적입니다. VS2008 또는 VS2010의 .NET 2.0 프로젝트를 대상으로 할 때 실제로 사용할 수 있습니다. 마찬가지로 .NET 3.5를 사용하는 경우 LINQ를 사용하지 않고 표현 트리를 사용할 수 있습니다.
그러나 저는 LINQ를 피하지 말 것을 강력히 권장합니다. 이것은 대단히 강력한 도구입니다. 저는 개인적으로 Queryable
을 통해 번역해야하는 LINQ 제공자를 경계합니다. 그들은 예측하기가 더 어렵습니다. 그러나 LINQ to Objects는 순금입니다. 그것에 대해 싫어하는 점은 무엇입니까? 쿼리 식은 당신을 넣어 것처럼 ... 그래서
var query = people.Where(p => p.Age >= 18)
.Select(p => p.Name);
을 : 당신이 람다 표현식을 사용하여 "점 표기법"에 쿼리를 작성 할 수 있습니다 - 당신은 LINQ를 사용하기 위해 쿼리 식을 사용할 필요는 없습니다 그들에 대해 걱정할 필요가 없습니다.
편집 : 그냥 질문 자체에 대한 코멘트에 대응하기 위해 - LINQBridge 프로젝트를 통해, .NET 2.0 객체로 수 사용 LINQ를.
14 초 꺾임 ... :( –
성능 측면에서 LINQ는 얼마나 비싸습니까? 사전 (컨테이너 구조) 쿼리에는 만 사용하려고합니다. –
많은 방법을 연결하는 쿼리가 성능 때문에 LINQ에서 벗어나지는 않을 것입니다. (프로파일 링으로 표시되는) 히트가 있으면 문제를 일으키는 정확한 * 쿼리를 변경합니다. –
람다는 절대적으로 linq없이 사용할 수 있습니다. 나는 항상 그렇게합니다. 다음은 code sample입니다. 다른 곳에서는 linq가없는 람다를 사용합니다.
람다 표현의 출처와 사용 이유를 이해하는 것이 중요합니다. 대부분의 사람들이 LINQ를 통해 lambda에 대해 듣는다는 사실은 사실이지만 LINQ는 익명 메소드에 대한 후임으로서 C# 언어 버전 3.0에 도입 된 기능을 구현하는 것입니다.
람다는 실제로 delegate
과 함께 사용되며 람다를 사용할 때 실제로 수행하는 것은 delegate
에 메소드를 할당하는 것입니다. 그러나 컴파일러는 람다 식을 사용하고 있기 때문에 delegate
을 사용하고 있다고 추론 할 수 있기 때문에 delegate
키워드를 사용하지 않아도됩니다.
MyDel del = delegate (int x) {return x + 1;} ; // Using an anonymous method
MyDel le1 = x => x + 1; // Using a lambda expression
가 호출 될 때까지 대리인이 그 방법을 실행하지 않는 것을 유의 사항 : 따라서 다음
같은 일이다. 따라서 람다 식에서x => x + 1
이 표시 되더라도
le1(someInt)
에 전화 할 때까지 실제로 실행되지 않습니다. 위임자가 호출 될 때까지 쿼리가 실행되지 않는 LINQ에서이 작업을 보았을 수 있습니다.
간단히 말해서 (간결함을 알지 못합니다.) 람다는 클래스 몸체에 선언하지 않고도 짧은 방법으로 메소드 호출을 표현할 수있게 해줍니다.
다니엘 솔리스 (Daniel Solis)의 Illustrated C# 2008, pp.375-377.
왜 Linq를 사용하지 않으시겠습니까? 당신은 heritance 나 function call을 피해야 할 수도 있습니다. 그것은 이유의 이유로 언어의 일부이며,보다 깔끔하고 단순하며 더 나은 코드를 작성할 수 있습니다. – jalf
LINQ는 다양한 것을 말합니다. LINQ-to-SQL은 LINQ-to-XML과 다르며 람다와 결합하면 강력한 개체 쿼리 기능을 사용할 수 있습니다. 궁금합니다. LINQ에 대한 참조를 제거하면 어떤 이점이 있습니까? – mkelley33
@jalf : Jon Skeet이 이미 작성한 것처럼 .NET 2.0을 대상으로 할 때 람다를 사용할 수 있지만 LINQ는 사용할 수 없습니다. 저것은 (제 생각으로) 주된 이유입니다. – OregonGhost