을 나는이 목록이 있습니다목록에 (이름을 기준으로) 마지막 요소를 가져옵니다 - LINQ C#을
애니 - P
월 - ""
애니 - P
월 - P
을 P
월 - - P
애니 : 그리고는 이름을 기준으로 마지막 요소를 얻으려면
이 코드를 가지고 있지만 오류가 발생했습니다 : The type arguments for method 'System.Linq.Enumerable.SelectMany<TSource,TResult>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
또는 목록의 맨 마지막 요소 (5 월 - P) 만 가져옵니다. 덤프()는 LINQPad 확장은 다음과 같습니다
class Passenger
{
public string Name { get; set; }
public int PassengerID { get; set; }
public List<TravelDoc> TravelDocs { get; set; }
}
class TravelDoc
{
public string DocType { get; set; }
public int? DocNumber { get; set; }
}
List<Passenger> modList = new List<Passenger>()
{
new Passenger() { Name = "Annie", PassengerID = 0,
TravelDocs = new List<TravelDoc>()
{
new TravelDoc() { DocNumber = 100, DocType = "P" }
}
},
new Passenger() { Name = "May", PassengerID = 1,
TravelDocs = new List<TravelDoc>()
{
new TravelDoc() { DocNumber = null, DocType = "" }
}
},
new Passenger() { Name = "Annie", PassengerID = 0,
TravelDocs = new List<TravelDoc>()
{
new TravelDoc() { DocNumber = 100, DocType = "P" }
}
},
new Passenger() { Name = "May", PassengerID = 1,
TravelDocs = new List<TravelDoc>()
{
new TravelDoc() { DocNumber = 200, DocType = "P" }
}
}
};
코드
var passengersMod = modList.SelectMany(pax => pax.TravelDocs
.Select(doc => new { Passenger = pax, TravelDoc = doc })
.Last())
.Dump();
코드 (잘못된 결과)
var passengersMod = modList.SelectMany(pax => pax.TravelDocs
.Select(doc => new { Passenger = pax, TravelDoc = doc })
).Last()
.Dump();
주 (오류가 발생합니다). : D
LINQ를 사용하여 원하는 결과를 얻으려면 어떻게해야합니까?
미리 감사드립니다.
편집 :
좋아, 그것은 대부분의 사람들이 "이름을 기반으로"조건과 혼동됩니다 것으로 보인다. 죄송 합니다만 불행히도 기준을 설명하는 더 좋은 단어는 생각할 수 없습니다 (미안). 그러나 Jon Hanna는 내가 의미하는 것을 얻었다, 감사합니다! 또한 제안 된 제목에서 "익명 형식"을 제거했습니다. 다시 한 번 감사드립니다! : D
또 다른 편집 :
나는 약간의 차이가 이와 유사한 다른 상황이있다. 예, 목록은 일부 기준 (이 예에서는 이름)에 따라 그룹화되었지만 각 그룹의 마지막 항목을 필요로하지 않고 필요한 것은 각 그룹의 n 번째 항목입니다.
나는 각 그룹에서 n 번째를 얻을 수있었습니다 :이 질문을modList.GroupBy(p => p.Name).Select(g => g.ToList()[index])
년 후, 존의 대답은 여전히 저를 도왔다. 나는 그의 대답을 두 번 upvote 할 수 있었으면 좋겠어! 이것이 다른 사람을 도울 수 있기를 바랍니다. : D
"이름을 기준으로"어떤 주문을 하시는지 정확하게 알 수 있습니까? – doogle
LOL. 나는 그것이 내가이 시간대에서 거의 취침 시각 인 것을 알았던와 그것이 내가 대부분의 질문에 "TL, DR"에 갔다라고하는 사실을 실제로 얻었던 것이라고 생각한다! :) –
하하. 때로는 특정 문제를 너무 깊이 이해하려고 노력하면 표면 요구 사항을 간과 할 수 있습니다. Lolz. 최고 감사합니다! 들어오는 두통에서 나를 구해 줬어! : P –