Eine explizite Konvertierung existiert (fehlt eine Besetzung?)

7

Ich habe eine Methode, die mir die groupID von Benutzern gibt und dann möchte ich die Nachrichten basierend auf der GroupID des Benutzers erhalten.

%Vor%

hier rufe ich die obige Methode auf:

%Vor%

und das ist der Fehler:

  

Typ kann nicht implizit konvertiert werden   ' System.Collections.Generic.IEnumerable<MeetingBoard.Model.News> ' zu   '%Code%'. Eine explizite Konvertierung existiert (bist du   eine Besetzung fehlt?)

    
matarsak 02.05.2013, 08:31
quelle

5 Antworten

13

Getnews gibt eine Sammlung von Nachrichten zurück, und Ihre Zeile erwartet eine einzelne Nachricht.

Sie könnten es versuchen

%Vor%

oder erwarte ein unzählbares

%Vor%     
Bob Vale 02.05.2013, 08:34
quelle
5

Diese Zeile setzt eine Variable, die als eine einzelne Instanz von News definiert ist, auf eine Instanz von IEnumerable:

%Vor%

Sie möchten zu

wechseln %Vor%

Im Grunde versuchen Sie, eine Sammlung von Nachrichten auf eine einzige Referenz von News zu setzen.

    
Paulie Waulie 02.05.2013 08:34
quelle
4

Getnews gibt eine IEnumerable<News> (d. h. mehrere Nachrichten) zurück und Sie versuchen, sie News news zuzuordnen (d. h. ein einzelnes News-Element). Das funktioniert nicht.

Es gibt zwei Möglichkeiten, je nachdem, was Sie tun möchten.

Wenn Sie alle Nachrichten verwenden möchten, ändern Sie News news in IEnumerable<News> :

%Vor%

Wenn Sie nur eine einzige Nachricht verwenden möchten, verwenden Sie FirstOrDefault :

%Vor%

Je nachdem, was Sie erwarten, können Sie auch einen der folgenden verwenden:

  • First() : Sie erwarten, dass Getnews immer mindestens eine Nachricht zurückgibt. Dies wird eine Ausnahme auslösen, wenn keine Nachrichten zurückgegeben werden.
  • Single() : Sie erwarten, dass Getnews immer genau eine Nachricht zurückgibt. Dies wird eine Ausnahme auslösen, wenn mehr als eine oder null Nachrichten zurückgegeben werden.
  • SingleOrDefault() : Sie erwarten, dass null oder eine Nachricht zurückgegeben wird. Dies wird eine Ausnahme auslösen, wenn mehr als eine Nachricht zurückgegeben wird.
Daniel Hilgarth 02.05.2013 08:34
quelle
4

Das ist was du willst

%Vor%

oder vielleicht etwas wie:

%Vor%     
Marco 02.05.2013 08:35
quelle
4

return newsRepository.GetMany(constraint); gibt IEnumerable<News> zurück, das sollten Sie tun:

%Vor%

gibt das erste News zurück, wenn es in newRepository gefunden wird, andernfalls null

    
Ahmed KRAIEM 02.05.2013 08:35
quelle

Tags und Links