LINQ 결과를 ObservableCollection으로 캐스팅
그것이 LINQ 결과라는 사실은 아마도 질문과 관련이 없을 수도 있지만 어쨌든 언급하고 있습니다-이것이이 질문을 초래 한 컨텍스트이기 때문입니다.
LINQ 쿼리를 실행합니다. 결과는 다음과 같습니다.
IEnumerable<MyClass>
결과를 ObservableCollection에 넣고 싶습니다.
ObservableCollection<MyClass>
이 캐스트는 어떻게하나요? (IEnumerable을 통해 실행하고 요소를 ObservableCollection에 복사하지 않고). LINQ에 몇 가지 To .. () 함수가 있지만이 캐스트에는 도움이되지 않는 것 같습니다 ..?
다음을 사용하십시오.
ObservableCollection<Foo> x = new ObservableCollection<Foo>(enumerable);
그러면 필요한 복사가 수행됩니다. 라이브 쿼리의 변경 사항을 관찰 할 수있는 방법은 없습니다.하지만의 아이디어 ObservableQuery<T>
는 흥미롭지 만 도전적입니다.
확장 방법을 사용하려면 간단합니다.
public static ObservableCollection<T> ToObservableCollection<T>
(this IEnumerable<T> source)
{
if (source == null)
{
throw new ArgumentNullException("source");
}
return new ObservableCollection<T>(source);
}
var linqResults = foos.Where(f => f.Name == "Widget");
var observable = new ObservableCollection<Foo>(linqResults);
이를 위해 ObservableCollection
생성자 를 사용할 수 있습니다 .
ObservableCollection<MyClass> obsCol =
new ObservableCollection<MyClass>(myIEnumerable);
IEnumerable은 인터페이스입니다.
IEnumerable의 콘텐츠를 ObservableCollection으로 복사해야합니다. 새 것을 만들 때 IEnumerable을 ObersvableCollection의 생성자에 전달하여이를 수행 할 수 있습니다.
저는이 도서관을 몇 년 전에 썼습니다.
https://github.com/wasabii/OLinq
당신이 원하는 것을 정확히하는 것이 아니라 더 많은 일을합니다. 식 트리를 구문 분석하고 참조 된 컬렉션에 연결하며 변경시 이벤트를 생성하는 다른 컬렉션을 노출하는 Linq 쿼리 공급자입니다.
Linq 연산자 몇 개가 누락되었습니다. 그러나 코드 기반은 확장하기 어렵지 않습니다.
참고 URL : https://stackoverflow.com/questions/1465285/cast-linq-result-to-observablecollection
'UFO ET IT' 카테고리의 다른 글
다시 컴파일하지 않고 .NET에서 웹 서비스 주소를 동적으로 전환하려면 어떻게해야합니까? (0) | 2020.12.07 |
---|---|
Rails를 사용하여 클라이언트 IP와 서버 IP를 얻는 방법 (0) | 2020.12.07 |
Qt에 C 인터페이스가 있습니까? (0) | 2020.12.07 |
현재 실행중인 Solr의 버전을 어떻게 알 수 있습니까? (0) | 2020.12.07 |
gcc 전 처리기 출력에서 '# 1 "ac"'와 같이 해시 기호와 숫자로 시작하는 행의 의미는 무엇입니까? (0) | 2020.12.07 |