2011-09-01 165 views
2

我有一個類,並且在該類中有一個函數,它返回一個類型爲Clients的列表,該列表包含有關客戶端的所有信息,但現在我想知道如何才能知道訪問名存實亡例如列表..請參見下面從列表中獲取值

功能的ClientsInfo類:

public List<Clients> GetClientsByID(int clientID) 
{ 
    ClientsData cData = new ClientsData(); 

    List<Clients> listClients = new List<Clients>(); 

    DataTable dtClients = cData.GetClientsByID(clientID).Tables[0]; 

    foreach (DataRow row in dtClients.Rows) 
    { 
     this.Name = row["Name"].ToString(); 
     this.Address = row["Address"].ToString(); 
     this.BussinessName = row["Bussiness"].ToString(); 
    } 

    listClients.Add(this); 

    return listClients; 
} 

名稱,地址和經營業務,在這個類的屬性..現在我打電話從這個名單其他地方喜歡這個

List<Clients> clientL = ClientsInfo.GetClientsByID(client_id); 

現在我得到了存儲在clientL中的信息,我該如何檢索名稱?的客戶?

+0

哪些客戶?你有他們的名單? – Martin

+0

試試這個:clientL [somePosition] .Name – Willem

+0

我只想要第一個客戶端在那個列表中... – user710502

回答

3

我假設你使用.NET 3.5或更高版本,所以你可以使用LINQ。我希望各位能夠在GetClientsByID代碼中使用LINQ爲好,事實上,但在離開的是,除了...

嗯,你已經得到了多個這裏客戶的不僅僅是一個。所以,你可以用多個名字:

IEnumerable<string> names = clientL.Select(x => x.Name); 

或作爲List<string>

List<string> names = clientL.Select(x => x.Name).ToList(); 

如果你一定還有的將是一個值,你可以使用Single

string name = clientL.Select(x => x.Name).Single(); 

如果可能有零個或一個,您可以使用SingleOrDefault

// name will be null if clientL was empty 
string name = clientL.Select(x => x.Name).SingleOrDefault(); 

(還有FirstFirstOrDefault等)

0

使用LINQ:

var names = from c in ClientsInfo.GetClientsByID(client_id) 
      select c.Name; 

names然後包含所有名字的IEnumerable<string>

如果那不是你想要的,請再次解釋你的問題。

2

好,因爲所有你正在做的是創造一個項目的名單.. 假設名稱是公共財產..

clientL[0].Name 

應該這樣做

2

您可以使用LINQ來獲取這樣的信息:

List<string> clientNames = clientL.Select(c => c.Name).ToList(); 
1

試試這個:

List<string> clientL = ClientsInfo.GetClientsByID(client_id).Select(x => x.Name).ToList(); 

這會給你的列表只有名字。

2

可以使用LINQ方法是:

string clientName = clientL.Where(client => client.ID == 1).Select(client => client.Name).FirstOrDefault(); 

或者檢索所有的名字:

List<string> clientNameList = clientL.Select(client => client.Name).ToList();