2015-01-05 13 views
5

Tôi gặp lỗi ở bên trong foreach khi đang sử dụng Select trong datatable.Min (5) phải nhỏ hơn hoặc bằng max (-1) trong đối tượng Range?

Đây là mã tôi đã cố gắng cho đến nay

foreach (DataRow drOuter in dtLogic.Select("Name='>' OR Name='='")) 
{ 
    foreach (DataRow drInner in dtLogic.Select("ParentId=" + Convert.ToInt64(drOuter["Id"]) + "")) 
    { 

    } 
} 

nơi Convert.ToInt64(drOuter["Id"]) có giá trị 2107362180 khi tôi kiểm tra trong Immediate Window.
Vậy tại sao nó lại ném lỗi dưới đây?

enter image description here

Trả lời

11

Bạn nên kiểm tra cho các chuỗi và không cho con số để chèn dấu nháy đơn trong truy vấn expr='string'

foreach (DataRow drInner in dtLogic.Select("ParentId='" + Convert.ToInt64(drOuter["Id"]) + "'")) 
{ 

} 

sau khi chỉnh sửa này, bạn có thể thay thế như @Christos câu trả lời nói

Convert.ToInt64(drOuter["Id"]) 

với

drOuter["Id"].ToString() 
+0

Có. Tôi đã bỏ lỡ các dấu nháy đơn bên trong datatable.Select(). Vì cột chỉ chứa giá trị int, vẫn còn Convert.ToInt64 (drOuter ["Id"]) đang hoạt động. Cảm ơn rất nhiều @faby –

+0

Ok nó hoạt động, nhưng bạn có thể giải thích lý do tại sao? –

Các vấn đề liên quan