[英]Accessing Property of Class in List<Class>
我看到很多類似的問題,但沒有一個直接回答。 我有一個List<ClientEntry>
。 我想訪問ClientEntry中的屬性。 我的代碼看起來像這樣:
class ClientEntry
{
private string _clientName;
private string _clientEmail;
public void ClientEntry(string name, string email)
{
this._clientName = name;
this._clientEmail = email;
}
public string ClientName
{
get
{
return _clientName;
}
set
{
_clientName = value;
}
}
public string ClientEmail
{
get
{
return _clientEmail;
}
set
{
RegexUtilities Validator = new RegexUtilities();
if (Validator.IsValidEmail(value))
{
_clientEmail = value;
}
}
}
}
后來:
private List<ClientEntry> clientList;
然后我將一堆ClientEntry添加到List中。
如何訪問clientList中項目的ClientName和ClientEmail屬性? 另外,如何檢查List中某個ClientName或ClientEmail屬性的存在? 甚至可以使用對象列表嗎? 我知道dict可能會更好,但我想看看是否可以使用List和具有屬性的類來完成。
您可以使用Linq使用Any()
在列表中查找值
例如。
bool emailExists = clientList.Any(x=>x.ClientEmail == <email>);
要訪問值,您可以使用索引訪問器(如果您知道它),循環集合或使用Where()
來搜索它:
var email = clientList[index].ClientEmail
要么
foreach (var client in clientList)
{
var email = client.ClientEmail
}
要么
var email = clientList.Where(x=>x.ClientName == <clientName>).FirstOrDefault();
您可以瀏覽以下列表
foreach (ClientEntry client in clientList)
{
//client.ClientName
//client.ClientEmail
}
要查找特定記錄,您可以將其搜索為
clientList.Where(p=> p.ClientEmail == "email@domain.com").FirstOrDefault();
要訪問列表中的特定項目,請輸入索引/使用foreach
string name = clientList[index].ClientName;
foreach(var client in clientList)
{
name = client.ClientName; // access the item one by one
}
要檢查屬性的某個值是否存在,請使用linq
bool isExist = clientList.Any(i => i.ClientName == "John");
使用擴展方法 !
像這樣的東西,你可以輕松地對擴展類編寫單元測試,也可以直接閱讀。
public static class ClientEntriesExtension
{
public static bool ExistEmail(this IEnumerable<ClientEntry> entries, string targetEmail)
{
return entries.Any(x=>x.ClientEmail == targetEmail);
}
}
bool exist = clientList.ExistEmail(targetEmail)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.