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

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é.

1 Like

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

  • 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);
            }

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 .

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 :frowning:

Exception gì bạn có thể up thông báo lên cho mình xem được không :grin:
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 :slight_smile:

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

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();

@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 đề 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. :slight_smile:

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ỉ >

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ì 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.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?