반응형
IList를 목록으로 캐스팅
IList
유형을 List
유형으로 변환 하려고하는데 매번 오류가 발생합니다.
List<SubProduct> subProducts= Model.subproduct;
Model.subproduct
를 반환합니다 IList<SubProduct>
.
시험
List<SubProduct> subProducts = new List<SubProduct>(Model.subproduct);
또는
List<SubProduct> subProducts = Model.subproducts as List<SubProduct>;
이건 어때:
List<SubProduct> subProducts = Model.subproduct.ToList();
제 경우에는 제안 된 솔루션을 사용할 수 없기 때문에 이렇게해야했습니다.
List<SubProduct> subProducts = Model.subproduct.Cast<SubProduct>().ToList();
List<SubProduct> subProducts= (List<SubProduct>)Model.subproduct;
암시 적 변환은을 List<>
구현 하기 때문에 실패합니다. 그 IList
반대가 아닙니다. 그래서 말할 수는 IList<T> foo = new List<T>()
있지만 List<T> foo = (some IList-returning method or property)
.
List<ProjectResources> list = new List<ProjectResources>();
IList<ProjectResources> obj = `Your Data Will Be Here`;
list = obj.ToList<ProjectResources>();
이것은 IList 개체를 목록 개체로 변환합니다.
다른 답변은 모두 IList와 함께 AddRange를 사용하는 것이 좋습니다.
캐스팅을 피하는보다 우아한 솔루션은 IList에 대한 확장을 구현하여 작업을 수행하는 것입니다.
VB.NET에서 :
<Extension()>
Public Sub AddRange(Of T)(ByRef Exttype As IList(Of T), ElementsToAdd As IEnumerable(Of T))
For Each ele In ElementsToAdd
Exttype.Add(ele)
Next
End Sub
그리고 C #에서 :
public void AddRange<T>(this ref IList<T> Exttype, IEnumerable<T> ElementsToAdd)
{
foreach (var ele in ElementsToAdd)
{
Exttype.Add(ele);
}
}
일반 객체 목록을 문자열 목록으로 캐스팅 / 변환하는 가장 좋은 옵션입니다.
object valueList;
List<string> list = ((IList)valueList).Cast<object>().Select(o => o.ToString()).ToList();
참고 URL : https://stackoverflow.com/questions/2207341/cast-ilist-to-list
반응형
'IT Share you' 카테고리의 다른 글
SVN 저장소를 다운로드 하시겠습니까? (0) | 2020.12.06 |
---|---|
플러그인 설치 시도시 오류 (0) | 2020.12.06 |
Linux SUSE 또는 RedHat에서 Python 2.7을로드하는 방법 (0) | 2020.12.06 |
PDF에 빈 줄을 삽입하는 방법은 무엇입니까? (0) | 2020.12.06 |
동일한 키를 가진 개체가 ObjectStateManager에 이미 있습니다. (0) | 2020.12.06 |