c#使用dynamic關鍵字傳輸數據的用法


問:

在實際開發中,特別是在ORM框架的基礎下,我們返回的數據都是強類型的實體對象。如果是單表查詢我們就可以直接返回對應的實體,如果是多表聯合查詢,我們可能就需要各個表中都返回一部分字段,組成一個新的數據集合。那么在這種情況下我們該怎么辦呢?

 

答:

傳統的方式是我們定義一個新的實體類,作為返回的符合數據的載體。而今天我將介紹一種新的方式,在不用重新定義傳輸實體的基礎上,解決這個問題。

 

代碼如下:

 

1.首先定義測試數據實體,模擬對應的兩張關聯表:

 

      public class student
        {
            public int id { get; set; }
            public string name { get; set; }
            public int age { get; set; }
        }
        public class address
        {
            public int id { get; set; }
            public int student_id { get; set; }
            public string city { get; set; }
        }

 

2.數據測試方法如下:

 

 public string DynamicTest()
        {
            List<student> students = new List<student>() { 
            new student(){ id=1,age=33,name="jack"},
            new student(){ id=2,age=12,name="tom"},
            new student(){ id=3,age=22,name="lily"},
            new student(){ id=4,age=66,name="wjh"}
            };

            List<address> addresss = new List<address>() { 
            new address(){ id=1,student_id=2,city="北京"},
            new address(){ id=2,student_id=1,city="上海"},
            new address(){ id=3,student_id=1,city="南京"},
            new address(){ id=4,student_id=3,city="蘇州"}
            };

            dynamic data=(from s in students
             join a in addresss
             on s.id equals a.student_id
             where s.age>12
             select new
             {
                 name = s.name,
                 city = a.city
             }
                 ).ToList();

            foreach (var item in data)
            {
                var s = item.name;
                var city = item.city;
            }
            
            return "s";
        }

注意:dynamic 對應的類型運行時才確定,並且生成的是內部類,所以只能在當前程序集中使用,使用dynamic在返回json的場景中使用比較方便。



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM