4 Stimmen

Konnte den Ausdruck nicht übersetzen

from p in context.ParentCompanies
where p.Name.Contains(e.Filter)
orderby p.Name
select new { Company = p.Name + "," + p.Country  };

Die obige Linq-Abfrage schlägt fehl, wenn ich p.Country oder ein anderes Attribut hinzufüge.

Ausnahme:

Expression 'Table(ParentCompany).Where(p => p.Name.Contains(Invoke(value(System.Func'1[System.String])))).OrderBy(p => p.Name)' konnte nicht in SQL übersetzt werden und konnte nicht als lokale Ausdruck behandelt werden.

4voto

istepaniuk Punkte 3566

LINQ to SQL kann Ihre Zeichenmanipulation nicht in SQL übersetzen. Wählen Sie sowohl p.Name als auch p.Country aus Ihrer Datenbank aus und führen Sie dann einen separaten Schritt zur Verkettung durch, wie folgt:

var parentCompanies = (from p in context.ParentCompanies
                       where p.Name.Contains(e.Filter)
                       orderby p.Name
                       select new { p.Name, p.Country }).ToList();

var concatenated = (from c in parentCompanies
                    select new { Company = c.Name + "," + c.Country });

0voto

spajce Punkte 6968

Versuchen Sie eine Klasse zu erstellen und von den ParentCompanies zu erben

public class ParentCompaniesEntity : ParentCompanies
{
   public string CompanyCountry {get; set;}
}

und so wird es benutzt.

var parentCompanies = (from p in context.ParentCompanies
                       where p.Name.Contains(e.Filter)
                       orderby p.Name
                       select new ParentCompaniesEntity() 
                       { 
                         CompanyCountry = p.Name + ", " + p.Country
                       }).ToList();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X