2015-06-28 12 views
7

Mam następujący wiersz kodu, który tworzy listę ciągów.jak przekonwertować listę ciągów do listy poleceń

List<string> tstIdss = model.Ids.Where(x => x.Contains(entityId)).Select(x => x.Split('_').First()).ToList(); 

Potrzebuję przekształcić go w listę Guids. tj. List<Guid> PermissionIds.

model.PermissionIds= Array.ConvertAll(tstIdss , x => Guid.Parse(x)); 

Wypróbowałem powyższy sposób, ale otrzymałem następujący błąd. model.PermissionIds jest realizowany w następujący sposób w mojej klasie modelu.

public List<Guid> PermissionIds { get; set; } 

Błąd 3

typu argumenty dla metody 'System.Array.ConvertAll (tWEJŚCIE [] System.Converter)' nie można wywieść ze stosowania. Spróbuj podać jawnie argumenty typu.

Odpowiedz

15

Można użyć LINQ za Select i ToList metody:

model.PermissionIds = tstIdss.Select(Guid.Parse).ToList(); 

Albo można użyć List<T>.ConvertAll metoda:

model.PermissionIds = tstIdss.ConvertAll(Guid.Parse); 
+0

O tak, naprawdę nie potrzebuję wyrażenia lambda, duh. –

+0

@Thomas Levesque, excellent. to działa. – immirza

+0

@Thomas Levesque, jeszcze jedno bardzo szybkie potwierdzenie, mam "string entityId = entity"; Jak mogę przekonwertować 'entityId' na Guid w tym przypadku? proszę – immirza

5

nie jestem zaznajomiony z ConvertAll, ale spróbuj użyć Select:

model.PermissionIds = tstIdss.Select(s=>Guid.Parse(s)).ToList(); 
1

Mam następujący wiersz kodu, który tworzy listę ciągów. Potrzebuję przekształcić go na listę Guids.

Jeśli twoja lista struny jest bezpieczna do przeanalizowania jako Guids, polecam odpowiedź od @Thomas Leveque.

Jeśli lista ciągów może zawierać pewne dopuszczalne GUID, to bezpieczniej jest używać TryParse następująco:

Guid bucket = Guid.Empty; 
model.PermissionIds = tstIdss.Where(x => Guid.TryParse(x, out bucket)).Select(x => bucket).ToList(); 

klauzuli WHERE będzie odfiltrować dowolny ciąg znaków, które nie mogą być sformatowany jako GUID .

Powiązane problemy