2013-08-16 38 views
5

Tôi có một DataTable tôi đang cố gắng thực hiện một hàng chọn đơn giản có chứa một giá trị.LINQ Chọn DataRow từ DataTable

Mã của tôi

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

Tôi cố gắng để kiểm tra xem chuỗi UserName tồn tại ở vị trí 0 các hàng trong DataTable

Khi tôi chạy truy vấn này tôi nhận được một DataRow trống lại.

Tôi đã cố gắng sử dụng [] quanh vị trí mà tôi muốn chọn.

mọi người đều có thể thấy tôi đang làm gì sai.

+0

có vẻ tốt, ngoại lệ hoặc vấn đề là gì? – Matten

+0

Chỉ mục trường có chính xác không? Tôi hiểu rằng bạn muốn kiểm tra tại vị trí 0 nhưng nó có chứa tên không? Tôi đã thử với một datatable đơn giản và tôi kiểm tra trên vị trí 1 và nó đã trả lại cho tôi 2 hồ sơ. – Nilesh

+0

Bạn đang kiểm tra '==' Ngay cả khoảng trắng cũng có thể gây rắc rối ở đây! –

Trả lời

16

bạn phải kiểm tra xem bạn có so sánh với cột bên phải và kiểm tra dữ liệu trong bảng của mình hay không. công việc này tốt:

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; 

Tôi đã có thể đếm được với một datarow. Bạn cũng có thể thử lấy dữ liệu theo cộtName:

var LoginDetails = DTOperators.Rows 
           .Cast<DataRow>() 
           .Where(x => x["UserName"] == UserName).ToList(); 
Các vấn đề liên quan