簡體   English   中英

訪問列表中的類的屬性<Class>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM