我有一个类,在该类中有一个返回类型客户端列表的函数,该列表包含有关客户端的所有信息,但现在我想知道如何才能访问名称,仅用于示例清单..请看下面
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中的信息,如何仅检索名称?客户?
答案 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();
(还有First
,FirstOrDefault
等。)
答案 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>
。
如果那不是您想要的,请再次解释您的问题。