簡體   English   中英

檢查表中是否已存在字符串

[英]Check if string already exist in Table

我想檢查用戶輸入的電子郵件是否已存在於Office表中,下面看一下我到目前為止所做的事情,問題是officeEmail始終為true,即使輸入的電子郵件不存在也不會返回NULL

public static bool IsOfficeEmail(string email)
{

    using (var data = Database)
    {
        data.ObjectTrackingEnabled = false;
        var officeEmail = data.Offices.Where(a => a.Active && a.Email.Equals(email));

        if (officeEmail != null)                
            return true;
    }

    return false;
}

Where不會返回空值,而是空序列,將其更改為:

var officeEmail = data.Offices.FirstOrDefault(a => a.Active && a.Email.Equals(email));

if (officeEmail != null)                
    return true;

FirstOrDefault將返回默認值(此處為null),它將找不到查詢的值。

如果您對電子郵件記錄不感興趣,可以選擇使用“ Any

public static bool IsOfficeEmail(string email)
{
    using (var data = Database)
    {
        return data.Offices.Any(a => a.Active && a.Email.Equals(email))
    }
}

如果仍然不使用它,您將不會獲得電子郵件記錄。 您應該使用哪種方法取決於您對officeEmail ,如果您只是在查詢它是否存在->在這里, Any方法都是最好的方法。 如果您想檢查現有記錄並對其進行處理, FirstOrDefault會更好。

或者,如果您真的想使用.Where您還可以在其中檢查返回的集合是否包含ANY元素:

if (officeMail.Any()) // ...

甚至更短:

if (officeMail.Any(a => a.Active && a.Email.Equals(email))) // ...

如果要確保列表中完全有一項符合您的條件,請使用.Single而不是.Any ,如果沒有一項或多項則將引發異常。

您的支票始終返回true的實際原因是.Where即使沒有項目與條件匹配, .Where也會返回枚舉數。 因此,結果永遠不會為null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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