반응 프레임 워크를 살펴보기 시작했습니다. 아주 좋은 물건. 그러나 코드 샘플을 보면서 혼란 스럽습니다. linq 구문은 IQueryable과 함께 작동합니다. linq은 IEnumerable에서만 작동한다고 생각했습니다. C# 컴파일러는 확장 메서드 변환에 linq을 기반으로 무엇입니까? 특정 인터페이스와 함께 일련의 메소드가 필요합니까?Rx 프레임 워크에서 linq 구문이 IQueryable 인터페이스에서 작동하는 방식
답변
아닙니다. 이것은 단지 통사론적인 번역 일뿐입니다. 예를 들어, 컴파일러는이 번역됩니다
var query = from item in source
select item.Property;
그것은 않습니다
var query = source.Select(item => item.Property);
에 그
Select
방법에 대해 아무것도 모른 채. 번역을 수행 한 다음 번역 된 코드를 컴파일하려고 시도합니다.
모든 번역은 C# 4 사양의 7.16 절 (그리고 이전 버전의 해당 내용)에 자세히 설명되어 있습니다.
Rx의 경우에는 IObservable<T>
및 IQbservable<T>
의 내선 번호를 호출합니다. Parallel Extensions의 경우에는 ParallelQuery<T>
에있는 확장 메소드를 호출합니다.
일부 미친 물건을 함께 할 수 있습니다 - 나는 blog post 몇 가지 예제를 제공합니다. 여기에 또 다른 홀수 일이다 :
using System;
using System.Linq;
namespace CornerCases
{
class WeirdQueryExpression
{
static WeirdQueryExpression Where(Func<int, int> projection)
{
return new WeirdQueryExpression { Select = ignored => "result!" };
}
Func<Func<string, bool>, string> Select { get; set; }
static void Main()
{
string query = from x in WeirdQueryExpression
where x * 3
select x.Length > 10;
Console.WriteLine(query);
}
}
}
쿼리로 변환 다음을 반환 Where
속성 액세스에 이어 WeirdQueryExpression
를 돌려 고정 방법, 호출 인
WeirdQueryExpression.Where(x => x * 3)
.Select(x => x.Length > 10);
... Func<Func<string, bool>, string>
. 그런 다음 을 호출하여 다른 대표를 전달하고 결과를 query
에 할당하는으로 호출합니다.
펑키, 응?
OP를 돕기 위해 LINQ를 추가하면 Queryable 클래스를 통해 IQueryable의 확장 메서드가 검색됩니다. http : //msdn.microsoft.com/en-us/library/system.linq.queryable.aspx –
- 1. IQueryable 구문이 올바른가요?
- 2. 젠드 프레임 워크에서 mvc가 작동하는 방법
- 3. django 로케일이보기간에 작동하는 방식
- 4. JqueryMobile에서 CSS가 작동하는 방식
- 5. Rx 프레임 워크가 웹 응용 프로그램에서 사용됩니까?
- 6. MVC 패턴이 ZKoss에서 작동하는 방식
- 7. LINQ IQueryable Help
- 8. Microsoft 동기화 프레임 워크에서 정확히 일괄 처리가 작동하는 방법
- 9. MVC에서 Asp.net MasterPage가 작동하는 방식
- 10. DropDownListFor가 MVC3에서 작동하는 방식 이해
- 11. 엔터티 프레임 워크에서 왕복 로깅
- 12. LINQ IQueryable 개체에서 문자열 [] 반환?
- 13. Iqueryable 개체에 Linq 절 추가
- 14. 재귀 IQueryable Linq 확장 메서드
- 15. 젠드 프레임 워크에서 라우팅
- 16. 프레임 워크에서 파일 검사
- 17. IQueryable 인스턴스를 문자열의 LINQ 구문으로 변환
- 18. 경로가 css 및 js에서 작동하는 방식
- 19. SQL 서버 2005에서 Serializable이 작동하는 방식
- 20. C#에서 새로운 키워드가 작동하는 방식
- 21. 웹 응용 프로그램에서 보안 인증이 작동하는 방식
- 22. 메신저 (IM)가 작동하는 방식 (듣기)?
- 23. MySQL에서 비교에서 curdate()가 작동하는 방식
- 24. magento 지불 과정 .. 일반적으로 작동하는 방식
- 25. 엔티티 프레임 워크에서 NHibernate 'Bags'구현
- 26. 스프링 프레임 워크에서 함수 호출
- 27. 엔티티 프레임 워크에서 WPF 바인딩
- 28. 웹 프레임 워크에서 권한 부여
- 29. ASP.NET MVC 프레임 워크에서 캐싱
- 30. Xcode 프레임 워크에서 헤더 공개하기
LINQ는 항상 IQueryable 및 IEnumerable에서 작동합니다. –