2012-09-25 11 views
7

Ich versuche, eine Dropdown-Liste mit einer Linq-Abfrage aufzufüllen. Jedoch muss ich Vorname und Nachname als ein Feld haben. Verkettung in DDL.DataTextField gibt einen Feld nicht gefunden Fehler zurück.SELECT AS in Linq mit WHERE-Klausel

SQL würde wie folgt sein:

SELECT (FirstName + SPACE + Surname) AS FullName FROM Table WHERE ID=1 

Aktuelle Linq:

public IList<mytable> GetNames(int p_ID) 
{ 
    return db.mytable.Where(c => c.ID_fk == p_ID).ToList(); 
} 

Antwort

12

Sie können dies nutzen, wenn Sie nur den vollständigen Name:

public IList<string> GetNames(int p_ID) 
{ 
    return db.mytable.Where(c => c.ID_fk == p_ID) 
        .Select(x => x.FirstName + " " + x.Surname) 
        .ToList(); 
} 
+0

Wir könnten 'verwenden (von c in db.mytable wo c.ID_fk == p_id wählen (c.FirstName + "" + c.Nachname)). ToList() 'auch, nicht wahr? – Amedio

+1

@Amedio: Ja, ich denke, das würde auch funktionieren. Ich bevorzuge jedoch die Methodensyntax in den meisten Fällen. Ich finde es klarer. –

2

Sie könnten dies versuchen:

return db.mytable.Where(c => c.ID_fk == p_ID).Select(c=>c.FirstName + " " + c.Surname). ToList(); 

so haben Sie eine Liste von Strings

1

Sie können versuchen, mit

return db.mytable.Where(a => a.ID_fk==p_ID) 
        .Select(a => a.FirstName + "-" + a.Surname) 
        .ToList();