2013-08-16 11 views
5

Mam DataTable Próbuję zrobić prosty wiersz wyboru, który zawiera wartość.LINQ Wybierz DataRow z DataTable

Mój kod

var LoginDetails = from myRow in DTOperators.AsEnumerable() 
          where myRow.Field<string>(0) == UserName 
          select myRow; 

Próbuję sprawdzić, czy istnieje ciąg nazwa_użytkownika w pozycji 0 wierszy w DataTable

Kiedy uruchomić tę kwerendę dostaję pustą datarow powrotem.

Próbowałem użyć [] wokół pozycji, którą chcę wybrać.

każdy może zobaczyć, co robię źle.

+0

wygląda dobrze, jaki jest wyjątek lub problem? – Matten

+0

Czy indeks pola jest prawidłowy? Rozumiem, że chcesz sprawdzić na pozycji 0, ale czy zawiera ona nazwy? Próbowałem z prostym datatable i sprawdziłem na pozycji 1 i zwróciło mi 2 rekordy. – Nilesh

+0

Sprawdzasz '==' Nawet spacje mogą powodować kłopoty! –

Odpowiedz

16

musisz sprawdzić, czy porównujesz z prawą kolumną i sprawdź dane w tabeli. Ta praca dobrze:

var DTOperators = new DataTable(); 
var UserName = "test"; 
DTOperators.Columns.Add("UserName", typeof(string)); 
DTOperators.Rows.Add("test1"); 
DTOperators.Rows.Add("test"); 
var LoginDetails = from myRow in DTOperators.AsEnumerable() 
        where myRow.Field<string>(0) == UserName 
        select myRow; 

Mam Enumerable jednym DataRow. Możesz również spróbować uzyskać dane według nazwy kolumny:

var LoginDetails = DTOperators.Rows 
           .Cast<DataRow>() 
           .Where(x => x["UserName"] == UserName).ToList(); 
Powiązane problemy