ds.Tables[4]
có thể, nhưng kết quả của truy vấn LINQ của bạn có thể không, có khả năng là trường hợp ngoại lệ bị ném. Tách chuỗi phương thức của bạn để sử dụng các thông số tạm thời để bạn có thể chết một số nơi xảy ra lỗi. Nó cũng sẽ giúp bạn kiểm tra các hàng hiện có trước khi bạn gọi tới số CopyToDataTable()
và tránh ngoại lệ.
Something như
DataTable dt = null;
var rows = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
if (rows.Any())
dt = rows.CopyToDataTable();
Một lựa chọn khác là sử dụng ImportRow
chức năng trên một tách DataTable
DataTable dt = ds.Tables[4].Clone();
var rows = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
foreach (var row in rows)
dt.ImportRow(row);
Nguồn
2015-02-04 15:14:58
Chỉ để đảm bảo, bạn chỉ muốn mục nhập cho ngày hôm nay hoặc một số ngày trong tương lai? – ryanyuyu
nó xảy ra vì không có hồ sơ phù hợp hoặc điền đầy đủ các điều kiện truy vấn và kết quả là null vì vậy ở đây im cố gắng để sao chép null để datatable ... – Mike
khi bạn đang cư DataTable bạn có thể không thay đổi truy vấn liên quan đến sql sử dụng để cư trú DataTable ban đầu ..? cũng là những gì nếu bạn đã thay đổi biểu thức labda thành một truy vấn LINQ .. bạn có nghĩ về điều đó cũng như https://msdn.microsoft.com/en-us/library/system.data.datatableextensions.asenumerable%28v=vs .110% 29.aspx || https://msdn.microsoft.com/en-us/library/bb386921%28v=vs.110%29.aspx || http://forums.asp.net/t/1557426.aspx?query+CopyToDataTable+does+not+work+when+select+new+is+used – MethodMan