30/09/2018, 18:53

Return anynomous type linq-c#?

Mình đang gặp chút vấn đề về việc trả về dữ liệu khi làm việc ở tầng nghiệp vụ của mô hình 3 lớp trong linq-c#.
Mình có 2 table :

Table PHUTUNG 
string MaPT
string TenPT
string MaHieuXe

tham chiếu khóa ngoại MaHieuXe tới table HIEUXE

Table HIEUXE
string MaHieuXe
string TenHieuXe

ở lớp bus mình muốn lấy danh sách các loại phụ tùng ứng với từng tên hiệu xe :

PhuTungDataContext ptData = new PhuTungDataContext();
HieuXeDataContext hxData = new HieuXeDataContext();
 var ptTable = from pt in ptData.PHUTUNGs
                          join hx in hxData.HIEUXEs on pt.MaHieuXe equals hx.MaHieuXe
                          select new
                          {
                              TenHieuXe = hx.TenHieuXe,
                              MaPhuTung = pt.MaPhuTung,
                              TenPhuTung = pt.TenPhuTung
                          };

vậy làm thế nào mình trả về được giá trị var này để tầng Presentation có thể gọi và đổ dữ liệu lên GridView ?

Khiem Nguyen viết 21:09 ngày 30/09/2018

bạn thử tạo một model tên là PhuTungHieuXeModels ở class này bạn sẽ khai báo những dữ liệu muốn hiện lên gridview ví dụ như là

public class PhuTungHieuXeModels
{
   public string TenHieuXe {get; set;}
   public string TenPhuTung {get; set;}
   public int MaPhuTung {get; set;}
   // ... và những filed khác mà bạn muốn hiển thị lên
}

sau đó ở lớp BUS bạn tạo mội hàm như sau:

public IEnumerable<PhuTungHieuXeModels> GetAll()
{
    PhuTungDataContext ptData = new PhuTungDataContext();
    HieuXeDataContext hxData = new HieuXeDataContext();
    var ptTable = from pt in ptData.PHUTUNGs
                  join hx in hxData.HIEUXEs on pt.MaHieuXe equals hx.MaHieuXe
                  select new PhuTungHieuXeModels 
                  {
                      TenHieuXe = hx.TenHieuXe,
                      MaPhuTung = pt.MaPhuTung,
                      TenPhuTung = pt.TenPhuTung
                  };
     return ptTable;
}
Nguyễn Anh Dũng viết 20:54 ngày 30/09/2018

Cái quan trọng là mình không muốn thêm class như vậy mỗi nghiệp vụ thêm 1 class thì cái project nó bự chình ình ra có cách nào tối ưu hơn được không ấy ?

Khiem Nguyen viết 20:57 ngày 30/09/2018

nếu bạn không muốn làm cách như vậy thì bạn sử dụng include

https://msdn.microsoft.com/en-us/data/jj574232.aspx

Nguyễn Anh Dũng viết 20:55 ngày 30/09/2018

ok thanks nhiều tìm hiểu kỹ đã,có gì quay lại hỏi tiếp

Bài liên quan
0