簡體   English   中英

使用Linq的條件

[英]Where condition using Linq

我在數據庫中有一個表

Code            No                 Email            Pwd
-----------------------------------------------------------    
ABCDEFG         1             aaa@gmail.com          1
EYETW           2             bbb@gmail.com          2
WDHH0           3                  NULL             NULL
DZDX220         4                  NULL             NULL
AL7F0MI         5                  NULL             NULL
Q5D6M4R         6                  NULL             NULL

現在,在此表中,我必須檢查用戶使用的email是否已經存在,然后我要檢索該行,如果該電子郵件不存在,那么我必須檢查是否已使用Pwd並檢索行數據。

我已經試過了

var data = (from table in ds.Tables[0].AsEnumerable()
            where table.Field<Int16>("Pwd") == Convert.ToInt16(pwd) || table.Field<string>("Email") != email
            select new {emailAddress = table.Field<string>("email") , passsword = table.Field<Int16>("Pwd") }).FirstOrDefault();

但這並沒有返回正確的答案。

測試用例

如果我通過aaa@gmail.com和2,那么我必須檢索`aaa@gmail.com 1。

如果我通過bbb@gmail.com和1,那么我想檢索bbb@gmail.com 2 or null

抱歉,如果他們中的任何一個存在,我想檢索這些值,但不能為空

您需要更新Where()。 應該是這樣的:

var data = (from table in ds.Tables[0].AsEnumerable()
            where (table.Field<string>("Email") == email) //email exists
            || (table.Field<string>("Email") != email && table.Field<Int16>("Pwd") == Convert.ToInt16(pwd)) //email doesn't exist, but password does
            select new {emailAddress = table.Field<string>("email") , passsword = table.Field<Int16>("Pwd") }).FirstOrDefault();

正如Yacoub在評論中指出的那樣,問題出在table.Field<string>("Email") == email它應該是== email

var matchingrow = ds.Tables[0].AsEnumerable()
                              .FirstOrDefault(table=> table.Field<Int16>("Pwd") == Convert.ToInt16(pwd) 
                                                   || table.Field<string>("Email") == email);

if(matchingrow != null)
{
    // matching email/pwd. logic goes here

    // matchingrow.Field<string>("Email");
}

暫無
暫無

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

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