从列表中获取值

时间:2011-09-01 13:37:34

标签: c# .net list

我有一个类,在该类中有一个返回类型客户端列表的函数,该列表包含有关客户端的所有信息,但现在我想知道如何才能访问名称,仅用于示例清单..请看下面

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;
}

Name,Address和Bussiness是这个类中的一个属性..现在我从其他地方调用这个列表

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

现在我收到了存储在clientL中的信息,如何仅检索名称?客户?

6 个答案:

答案 0 :(得分: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等。)

答案 1 :(得分:2)

好吧,因为您所做的只是创建一个项目的列表.. 假设Name是公共财产..

clientL[0].Name

应该这样做

答案 2 :(得分:2)

您可以使用LINQ检索此信息:

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

答案 3 :(得分:2)

您可以使用LINQ方法:

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

或者检索所有名称:

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

答案 4 :(得分:1)

试试这个:

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

这只会给你一个名单。

答案 5 :(得分:0)

使用LINQ:

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

names然后是包含所有名称的IEnumerable<string>

如果那不是您想要的,请再次解释您的问题。