2012-09-25 17 views
7

Próbuję wypełnić listę rozwijaną kwerendą Linq. Jednak muszę mieć imię i nazwisko jako jedno pole. Konkatenacja w numerze DDL.DataTextField zwraca błąd braku pola.SELECT AS w Linq z klauzul WHERE

SQL byłoby coś takiego:

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

Aktualny LINQ:

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

Odpowiedz

12

Można to wykorzystać, jeśli tylko potrzebują Imię i nazwisko:

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

mogliśmy korzystać z '(c w db.mytable gdzie wybrać c.ID_fk == p_id (c.FirstName + "" + c.Roztwór)). ToList() 'również, prawda? – Amedio

+1

@Amedio: Tak, myślę, że to też by działało. Wolę jednak składnię metod w większości przypadków. Uważam, że jest jaśniejsze. –

2

możesz spróbować tego:

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

więc masz listę ciągów

1

Można spróbować z

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