2011-09-01 138 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();