문제

할 수 있습 LINQ 사용 응용 프로그램에서 실행되는 기계뿐만 아니라.NET2.0 런타임 설치되어 있습니까?

이론적으로,LINQ 상의 문법,결과 IL 코드는 모습과 같은 것입니다.NET2.0.

나는 어떻게 쓰 LINQ 를 사용하지 않고.NET3.5 라이브러리?이 그것을 실행한다.NET2.0?

도움이 되었습니까?

해결책

가 있"해킹"그를 사용하여 포함 System.Core.dll 부터 3.5 프레임워크를 실행할 수 있다.net2.0 지만,개인적으로 난 것이고 싶지 않을 사용 등이 다소 흔들리는 기초입니다.

는 여기를 참조하십시오: LINQ 지원한다.NET2.0

  1. 새로 만드를 콘솔 프로그램
  2. 만 유지하는 시스템 및 시스템입니다.핵심으로 어셈블리
  3. 설정의 로컬 복사하는 진정한에 대한 시스템입니다.핵심이기 때문에,그것은 존재하지 않습니다.NET2.0
  4. 사용 LINQ 쿼리에서 메인 방법입니다.예를 들어 아래의 하나에.
  5. 모두 복사 bin 출력을 기계 어디에만 있습니다.NET2.0 을 설치
  6. 실행

(필요합니다.net2.0SP1 고 나는 아무 생각이 없는 경우 번들 System.Core.dll 을 위반하 EULA)

다른 팁

그것은 이상 없다는 것 중 하나가 언급된 LINQBridge.이 작은 멋진 프로젝트는 백 포트의 LINQ(페이지만,없이 진행)와 그 종속성(Func,액션,etc.)니다.NET2.0.고:

프로젝트를 참조 LINQBridge 컴파일하는 동안,그것은 바인딩 을 LINQBridge 의 쿼리 사업자;는 경우 참조 시스템입니다.핵심 중 컴파일,다음에 바인딩하기 Framework3.5 의 쿼리 연산자입니다.

이론에서 예을 제공해 당신에게 배포 LINQ 특정 어셈블리와 모든 종속성입니다.그러나 위반하는 마이크로 소프트의 라이선스에 있습니다.스콧 hanselman 은 쓴 블로그 게시물에 대 배포 ASP.NET MVC 에 ASP.NET 2.0 과 유사하다 당신이 무엇을 하고자 하는 않습니다.

사용할 수 있습니다 LINQ 소스에서 모노(.NET for Linux)을 얻을 LINQ 에서 실행.NET2.0.

IEnumerable<T> : yes 
IQueryable<T>  : yes
LINQ to XML : has been working in the trunk, but due to further additions, the trunk doesn't compile anymore

누군가가 수행하고 있으며 여기:
LINQ 습니다.NET2.0

짧은 대답:

  • LINQ 개체:네 (IEnumerable<T>)
  • LINQ to SQL/체:no (IQueryable<T>)
  • LINQ XML/데이터 집합:아?

이 질문 니다.Net3.5 사용할 수 있는 기능을 자동으로 또는 약간의 노력으로 때를 대상으로 하는.Net2.0 에서 VS2008.

기본적으로 아무것도만"syntax"설탕과 새로운 컴파일러(C#3.0,VB9.0)방출로 2.0 호환 IL 작동합니다.이 많은 기능이 포함되어 있에 의해 사용된 LINQ 같은 익명으로 클래스,람다 식으로 익명의 대리인,자동적인 속성이,개체의 이니셜라이저,그리고 컬렉션의 이니셜라이저 등이 있습니다.

일부 LINQ 기능을 사용하여 클래스,인터페이스,대리인,그리고 확장하는 방법에 새로운 3.5 어셈블리(등 System.Core.dll).재배포를 이 어셈블리 라이센스 위반이지만,그들은 될 수 있는 재 구현.확장 방법을 사용하여 필요한만을 선언하는 빈 System.Runtime.CompilerServices.ExtensionAttribute.LINQ 개체에 의존 IEnumerable<T> 확장자 및 여러 가지 대리인 선언(이하 Action<T>Func<T> 가족)및 구현 LINQBridge (로 mausch 언).LINQ XML 및 LINQ 데이터 집합에 의존하 LINQ 하는 개체는 또한 수을 구현했습니다.Net2.0 지만,나는 보지 못했 이에 불과합니다.

LINQ to SQL 및 LINQ to Entities 필요 많은 새로운 클래스(DataContext/ObjectContext, 의 특성 EntitySet<T>, EntityRef<T>, Link<T>, IQueryable<T>, 등)및 식 나무는 경우에도 어떻게든 재,게 요구할 것이다 적어도 있습니다.Net2.0SP1 작동합니다.

나에 대한 확실하지 않습니다.

나는,그러나,당신이 쓸 수 있 VB LINNQ 코드 w/out3.5 라이브러리를 사용하는 한 VS2008 컴파일러를 대상으로 2.0framework.

당신은 것입니다,그러나 몇 가지를 구현해야의 LINQ 방법을 자기.

LINQ 사용 syntatic 변화 번역하는 쿼리로 실행 가능한 코드.기본적으로,그것은 이와 같은 코드:

dim q = from x in xs where x > 2 select x*4;

변환로 이와 같은 코드:

dim q = xs.where(function(x) x > 2).select(function(x) x * 4);

에 대한 이 LINQ 에는 기능을 제공 3.5 프레임워크,그 방법으로 구현장 방법 중 하나페이나 진행(도있는 방법의 무리는 작업에 데이터를 설정합니다.)

기본페이 연장 방법에 정의된 시스템입니다.Linq.열거하는 방법은 다음과 같습니다:

<Extension()>
public function Select(of T, R)(source as IEnumerable(of T), transform as Func(of T, R)) as IEnumerable(of R)

   'do the transformation...

end function

의 진행 방법 확장을 표현이 나무로 인수보다는 람다.그들은 다음과 같습니다:

 <Extension()>
 public function Select(of T, R)(source as IQueryable<T>, transform as Expression(of Func(of T, R))
     'build a composite IQueryable that contains the expression tree for the transformation
 end function

식 트리 버전을 얻을 수 있도록 나무로 표현한 표현을 제공하여 절하는 사용할 수 있습니다 다음 생성 SQL 코드(또는 이제까지 당신이 원하는 다른).

당신은 아마 자신의 버전을 만들의 LINQ 개체에 대한 하루 또는니다.그것은 모두 예쁜직하고 있습니다.

를 사용하려면 DLINQ,그런 것들 것을 조금 더 어렵습니다.

이 없기 때문에,하는 동안 당신이 생각 LINQ 은 정말 그냥 구문 설탕,그것이 실제로 많이 사용하는 표현이 나무-기능이 없습니다.NET2.0.

그는 말했다.NET3.5 만 쌓.NET2.0,그 이유 IL 보이지 않는"다른"또는"특별한".

나는 보이지 않는다 당신은 그냥 설문 조사를 진행하고 있습니다.NET Framework3.5.모든 것입니다.NET2.0 에서 잘 작동합니다,그 약속:)

내가 알기로는 LINQ 라이브러리에만 사용할 수 있기 때문 프레임워크 3.0.를 사용하려면에서 비슷한 프레임워크 2.0 해야 합 rewritte 그것은 자신)또는 유사한 타사 라이브러리입니다.내가 발견한 정보의 비트를 하지만 그것은 확신하지 않게 하거나.

당신이 사용할 수 있는 linqbridge 습니다.net2.0

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top