나는 모든 ID의 목록을 가지고있다.
//암호
List<IAddress> AllIDs = new List<IAddress>();
AllIDs= AllIDs.Where(s => s.AddressId.Length >= s.AddressId.IndexOf("_"))
.Select(s => s.AddressId.Substring(s.AddressId.IndexOf("_")))
.ToList();
위의 LINQ 쿼리를 사용하고 있지만 컴파일 오류가 발생합니다.
//오류
암시 적으로 System.Collections.Generic.List 형식을 변환 할 수 없습니다. System.Collections.Generic.List
구성원 필드에서 하위 작업을 수행하려고합니다.AddressId
문자 "_"를 기반으로합니다.
내가 어디서 잘못한거야?
당신은 원하는 주소를 찾을 수 있습니다. 그러나 그 다음 당신은 id로부터 어떤 문자열을 선택합니다.
s.AddressId.Substring(s.AddressId.IndexOf("_")) is string
즉Select(s => s.AddressId.Substring(s.AddressId.IndexOf("_"))).ToList()
; 하위 문자열 목록을 반환합니다.
그냥 제거하고 사용하십시오.
AllIDs= AllIDs.Where(s => s.AddressId.Length >= s.AddressId.IndexOf("_")).ToList()
같이
Where(s => s.AddressId.Length >= s.AddressId.IndexOf("_"))
AllID 목록을 필터링하지만IAddress
에스
당신이 재 작성하면 이런 문제가 무엇인지 볼 수 있어야합니다.
너는 말했다.
var items = from addr in AllIds
where addr.AddressId.Length >= addr.AddressId.IndexOf("_") // filter applied
select addr.AddressId.Substring(s.AddressId.IndexOf("_")); // select a string from the address
AllIDs = items.ToList(); // hence the error List<string> can't be assigned to List<IAddress>
하지만 니가 원했어.
var items = from addr in AllIds
where addr.AddressId.Length >= addr.AddressId.IndexOf("_") // filter applied
select addr; // select the address
AllIDs = items.ToList(); // items contains IAddress's so this returns a List<IAddress>
업데이트하려는 경우AddressId
Linq 쿼리를 사용하면 다음과 같이 할 수 있습니다.
AllIDs.Where(s => s.AddressId.Length >= s.AddressId.IndexOf("_"))
.ToList()
.ForEach(s => s.AddressId = s.AddressId.Substring(s.AddressId.IndexOf("_")));
유의 사항.각각()Linq 확장은 아니지만 클래스 List의 메소드는 < T>.
IndexOf가 시간 소모적 일 수 있으므로 값 캐싱에 대해 생각해보십시오.
AllIDs.Select(s => new { Address = s, IndexOf_ = s.AddressId.IndexOf("_") })
.Where(s => s.Address.AddressId.Length >= s.IndexOf_ )
.ToList()
.ForEach(s => s.Address.AddressId = s.Address.AddressId.Substring(s.IndexOf_ ));
선택 작업.Select(s => s.AddressId.Substring(s.AddressId.IndexOf("_")))
객체를 수정하지 않으면 각 객체를 하위 문자열로 투영합니다. 그러므로.ToList()
~을 반환합니다.List<string>
.
List<string>
에List<IAddress>
... - Patryk Ćwiek