2016-05-03 19 views
0

Ich versuche, einen doppelten Wert zu formatieren (indem nur 2 Dezimalstellen angezeigt werden). Ich habe versucht, AsEnumerable zu verwenden, aber ich halte diesen FehlerLINQ to Entities erkennt die Methode String.Format nicht

LINQ to Entities erkennt nicht die Methode String.Format

var tw = workers.Select(x => new 
      { 
       Id = x.Id, 
       JobOpportunityFeedbacks = x.JobOpportunityFeedbacks.AsEnumerable(). 
       Select(y => new 
       { 
        Rating = String.Format("0.00",y.Rating), 
        Feedback = y.Feedback 
       }); 

Antwort

1

Sie haben die AsEnumerable außerhalb Ihrer ersten Select zu tun

var tw = workers.Select(x => new 
    { 
     Id = x.Id, 
     JobOpportunityFeedbacks = x.JobOpportunityFeedbacks 
      .Select(y => new 
      { 
       y.Rating, 
       y.Feedback 
      }) 
    }) 
    .AsEnumerable() 
    .Select(x => new 
    { 
     x.Id, 
     JopOpertunityFeedbacks = x.JobOpportunityFeedbacks 
      .Select(y => new 
      { 
       Rating = String.Format("0.00",y.Rating), 
       y.Feedback 
      }) 
    }); 
+0

Sie sind Antwort ist die Lösung. Aber es wird doppelt so lang werden, denken Sie, dass es eine andere Alternative gibt. (Ich kann den dezimalen Typ leider nicht verwenden) – Kira

+1

@HediNaily Was meinst du doppelt so langsam? Doppelt so langsam wie was? Ich weiß, es sieht so aus, als würden Sie das gleiche zweimal machen, aber dadurch vermeiden Sie, dass die Datenbank mehr Daten zurückgibt, als Sie benötigen. – juharr

0

Verwenden Sie die SqlFunctions-Klasse - Ich habe das nicht versucht, aber sollte funktionieren.

var tw = workers.Select(x => new 
      { 
       Id = x.Id, 
       JobOpportunityFeedbacks = x.JobOpportunityFeedbacks.AsEnumerable(). 
       Select(y => new 
       { 
        Rating = SqlFunctions.StringConvert(y.Rating, 4, 2) 
        Feedback = y.Feedback 
       }); 

https://msdn.microsoft.com/en-us/library/dd487158(v=vs.110).aspx

Verwandte Themen