簡體   English   中英

ADO.NET - 動態循環遍歷 SqlDataReader 列並將這些值分配給 C# Object

[英]ADO.NET - Loop through SqlDataReader columns dynamically and assign those values to C# Object

我有一個應用程序,學生可以使用它 select 他們希望加入的大學,在應用程序中,我們目前提供 select 最多 3 所大學的選項,我們說第一首選,第二首選和第三首選,我們有一個存儲過程,它返回該結果集的數據和列如下。

 UserId | FirstName | LastName | Email | Mobile | City |
 FirstPreferredCollegeId | FirstPreferredCollegeName |
 FirstPreferredCollegeGrade | FirstPreferredCollegePincode |
 SecondPreferredCollegeId | SecondPreferredCollegeName |
 SecondPreferredCollegeGrade | SecondPreferredCollegePincode |
 ThirdPreferredCollegeId | ThirdPreferredCollegeName |
 ThirdPreferredCollegeGrade | ThirdPreferredCollegePincode |

如果我們查看上面的結果集 UserId, FirstName, LastName, Email, Mobile, City 是唯一的,其中 PreferredCollegeId、PreferredCollegeName、PreferredCollegeGrade、PreferredCollegePinCode 重復三次。

我的 c# model 如下所示。

Public Class User
{
    Public int UserId {get;set;}
    Public string FirstName {get;set;}
    public string LastName {get;set;}
    public string Email {get;set;}
    public string Mobile {get;set;}
    public string City {get;set;}
    public List<Choice> Choices {get;set;}
}

public class Choice
{
    public string PreferredCollegeId {get;set;}
    public string PreferredCollegeName {get;set;}
    public string PreferredCollegeGrade {get;set;}
    public string PreferredCollegePincode {get;set;}
}

現在 ADO.NET 代碼如下所示,閱讀器是SqlDataReader object。

 objUser.UserId = (string)reader["UserId"];
 objUser.FirstName = (string)reader["FirstName"];
 objUser.LastName = (string)reader["LastName"];
 objUser.Email = (string)reader["Email"];
 objUser.Mobile = (string)reader["Mobile"];
 objUser.City = (string)reader["City"];

 /* Here I need to loop through reader and get College details
 Choice ch = new Choice();

現在我需要遍歷SqlDataReader並獲取 PreferredCollegeId、PreferredCollegeName、PreferredCollegeGrade、PreferredCollegePincode 並動態創建選擇 class 的 object 並將這些值綁定到選擇 ZA8CFDE63311C4B666C

嘗試這樣的事情:

var prefixes = new List<string> {"First", "Second", "Third"};
objUser.Choices = new List<Choice>();
foreach(var prefix in prefixes) 
{
   objUser.Choices.Add(new Choice {
       PreferredCollegeId= (string) reader[prefix + "PreferredCollegeId"],
       PreferredCollegeName = (string) reader[prefix + "PreferredCollegeName"],
       PreferredCollegeGrade  = (string) reader[prefix + "PreferredCollegeGrade"],
       PreferredCollegePincode  = (string) reader[prefix + "PreferredCollegePincode"]
   });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM