01/10/2018, 08:24

[Hỏi]Lấy dữ liệu trong 1 bảng SQL Server qua Linq to SQL

Chào các bạn !

Mình đang thao tác với SQL Server qua Linq C# nhưng hiện tại không lấy được dữ liệu trong 1 bảng.
Mình lấy theo cách như sau:

var data = from c in MyDatabase.TableError select c; // -< chỗ này trả về System.Data.Linq.DataQuery

Nhưng từ System.Data.Linq.DataQuery mình không thể cast sang các dạng list,array, IEnumerable… để sử dung đươc.
Đây là 1 đoạn duyệt thử nhưng không thành công. Báo lỗi special cast invalid ở “in”.

foreach(TableError e in data){
    //.......
}

Bạn nào có kinh nghiệm phần này xin chỉ giáo giúp.
@Huy_Hoang_Pham

Huy Hoàng Phạm viết 10:29 ngày 01/10/2018

Dùng data.ToList() nhé. Ở đây ép kiểu ko được đâu :D.

Còn đoạn duyệt thì để var e, sau đó chạy debugger xem kiểu dữ liệu của e là gì nhé.

Interns viết 10:28 ngày 01/10/2018

Vẫn phải tự code tay để cast thôi

  • Nếu để lấy data để hiển thị luôn:
var lst = (from item in MyDatabase.TableError
             select item).ToList();
  • Nếu lấy data sau đó xử lý rồi mới hiển thị:
Entity e;
List<Entity> lst = new List<Entity>();
foreach(var record in MyDatabase.TableError)
            {
                e = new Entity();
                e.Property1 = record.Property1;
                e.Property2 = record.Property2;
                lst.Add(e);
            }
Văn Dương viết 10:24 ngày 01/10/2018

Nếu chưa có .ToList thì nó trả về System.Data.Linq.DataQuery. Nhưng nếu dùng thêm .ToList để cast nó văng ngoại lệ ngay bạn ơi .

Văn Dương viết 10:36 ngày 01/10/2018

Câu lệnh của bạn hoàn toàn giống với của mình. Nhưng của mình đưa exeption không thể cast

Interns viết 10:30 ngày 01/10/2018

Exception gì bạn có thể up thông báo lên cho mình xem được không
Nếu có Exception thì mình nghĩ là:

  • Bạn chưa kết nối được đến Database

  • Kiểu dữ liệu trong Database vs C# không khớp.

Bạn thử kiểm tra lại xem

Văn Dương viết 10:24 ngày 01/10/2018

Giờ mình đã về nên mai mới up ảnh được. Nhưng nó thông báo như sau :

Unable to cast object of type ‘System.Data.Linq.DataQuery`1[TableError]’ to type ‘List’

Database mình đã kết nối và Insert dữ liệu vào đó OK. Database được tạo bởi chính Context.CreatDatabase();

Văn Dương viết 10:28 ngày 01/10/2018

@Huy_Hoang_Pham, @huyenthoai :
Đây là ảnh chụp lỗi không thể cast được nhé !
Bao gồm ảnh chụp lỗi, ảnh chụp design bảng do linq tạo ra, dữ lieu trong bang do linq đưa vào.

Văn Dương viết 10:36 ngày 01/10/2018

Vấn đề của mình đã được giải quyết.
Có một vấn đề này hơi ngoài luồng nhờ các bạn @Huy_Hoang_Pham, @huyenthoai chỉ giáo.

Mình có 1 class của Linq to Sql gọi là BASE đi.

Mình tạo 1 class khác kế thừa từ base để them một số thong tin nhưng làm sao để đồng bộ với SQL qua thằng kế thừa được nhỉ >

Interns viết 10:32 ngày 01/10/2018

Tạo class mới kế thừa chi vậy??? Sao không sửa dưới Database rồi connect lại

Văn Dương viết 10:27 ngày 01/10/2018

Vì dưới client mình cần thêm một số thuộc tính khác để dễ quản lý và không muốn đồng bộ dữ lieu của thuộc tính này vào database.

Bài liên quan
0