2012-09-25 21 views
0

我試圖從List<dataset>List<Person>請讓我知道如何加載第一個數據集值的列表<dataset>列出<Person>

我已經寫了下面的代碼加載值,但我不知該怎麼辦接下來

public List<Person> AddressFinderBLL_GetAddressbyName(String pfname,) 
{ 
    List<Person> Per= new List<Person>(); 
    List<DataSet> lstPer = new List<DataSet>(); 
    lstPer = Adal.AddressFinderDAL_GenerateDatabyName(
     pfname, pfnameval, plname, plnameval); 
     //here List<Dataset> lstPer loaded with values from back end foreach(DataRow item in lstPer[0].Tables[0].Rows) 
{ 
    // here i need to assign the values to List<Person> from List<Dataset>[0].tables[0].rows; 
}       

Person類具有以下屬性類類Person {

public String _firstname,_middlename; 

    public Person() 
    { 
    } 
    public String Firstname 
    { 
     get 
     { 
      return _firstname; 
     } 
     set 
     { 
      _firstname = value; 
     } 

    } 

    public String Middlename 
    { 
     get 
     { 
      return _middlename; 
     } 
     set 
     { 
      _middlename = value; 
     } 
    } 

}請讓我知道

+0

是的,我想知道如何進一步 – selvaanand

回答

2

我不知道你的DataSet有什麼列名,但這裏是一個近似:

List<Person> pers = lstPer[0].Tables[0].AsEnumerable(). 
        Select(r=> new Person() { 
         FirstName = r.Field<string>("fieldname1"), 
         MiddleName = r.Field<string>("fieldname2") 
        }) 
        .ToList(); 

順便說一下,返回的數據集列表的方法似乎有點不太可能。你確定那部分是對的嗎?也許它返回一個包含多個表的數據集?

+0

+1 cos我愛LINQ: ) –

+0

@salvaanand:如果你想要第一個數據集中的第一個表的人,這是正確的。 [我的方法](http://stackoverflow.com/a/12587475/284240)是正確的,如果你想在所有數據集中的第一個表的人。 –

+0

@TimSchmelter他註釋掉的代碼表示「需要從列表 [0] .tables [0] .Rows中將值分配給列表」,所以我認爲它只是第一個。但是你的可能是一個更安全的假設。 –

1

也許(我不知道你的表的列):你需要添加using system.Linq

Per = (from ds in lstPer 
     from row in ds.Tables[0].AsEnumerable() 
     select new Person(){ 
      FirstName = row.Field<String>("FirstName"), 
      MiddleName = row.Field<String>("MiddleName") 
     }).ToList(); 

注意,因爲上面是一個LINQ查詢(LINQ到-DataSet)。

+0

感謝你們所有人@Paul D'Ambra,Tim schmelter,Ann L的支持,但我無法使用方法AsEnumerable(),儘管我已經包含命名空間系統.Data.DataSetExtensions,但是它與paul D'Ambra代碼工作正常 – selvaanand

+0

感謝所有@Tim schemelter Ann L,它現在工作正常,因爲我通過使用lstper [0] .Tables [0]糾正了我的錯誤。 .AsEnumerable但更早我正在檢查lstper [0] .Tables [0] .Rows.AsEnumerable()...(..)我想告訴你所有3個人的代碼是有幫助的 – selvaanand

0

所有的內存,以便因人而異,但我希望它是

public List<Person> AddressFinderBLL_GetAddressbyName(String pfname,) 
{ 
    List<Person> Per= new List<Person>(); 
    List<DataSet> lstPer = new List<DataSet>(); 
    lstPer = Adal.AddressFinderDAL_GenerateDatabyName(pfname, pfnameval, plname, plnameval); 
    //here List<Dataset> lstPer loaded with values from back end 
foreach(DataRow item in lstPer[0].Tables[0].Rows) 
     { 
       // here i need to assign the values to List<Person> from List<Dataset>[0].tables[0].rows; 
      var p = new Person(); 
//it isn't clear what structure item will have. let's assume that it has 2 columns. one is   //firstname and the other is last name 
      p.FirstName = item[0]; 
      p.Middlename = item[1]; 
      Per.Add(p); 
     } 

但按照其他的答案,你會得到這麼多了周圍LINQ一點閱讀!

相關問題