2012-03-12 24 views
1

不能確定如何詞這但在這裏不用。我正在使用linq爲服務器編寫服務層。我已經有我的數據庫設置和我從繼承類,使用實體層(其將與WCF層代替正確使用JSON的 - 這個項目的軟件需求)。我目前正在編寫一個名爲「JoinCalendar」(應用程序的主要部分)的方法,我想證明用戶有效加入日曆。查詢的複式要求

下面是startes

public bool JoinCalendar(int famID, string email) 
{ 
using (FamilySchedulerEntities db = new FamilySchedulerEntities()) 
{ 
    var checkUser = (from u in db.Users 
        where u.familyID.Equals(famID) && !u.emailAddress.Equals(email, StringComparison.InvariantCultureIgnoreCase) 
        select u).FirstOrDefault(); 

    if(checkuser != null){ return false} 
    else 
    { 
    //stuff 
    return true; 
    } 
代碼

這種方法的目的是採取FAMILYID日曆用戶試圖加入的(一組用戶的標識字段)和用戶EMAILADDRESS(獨特每個用戶的ID)。我想從該查詢中執行兩個不同的檢查。

首先:我想檢查familyID是否有效(即確保familyID是存儲在數據庫中的實際值) 其次:檢查用戶的電子郵件地址是否與註冊到任何家庭 第三:我可以使用「!」運營商在LINQ查詢ORIS它不好的做法/禮儀

親切的問候, 西蒙·約翰遜

PS。只使用linq(實際上編寫一個數據庫應用程序)不到一個星期,所以請保持這個新手友好。理想情況下,我需要一個超級elegenat解決方案,因爲這臺服務器的客戶端可能使用蜂窩(即非wifi)連接進行連接,我需要將數據傳輸保持在最低限度。如果最好的解決辦法是然後請解釋一下sloooow

+0

的'Equals'方法LINQ直接對DB寫作時不可用。另外,DB整理定義比較是有或沒有文化/情況下進行,使得查詢時,你不需要指定它 – ntziolis 2012-03-12 12:00:09

+0

我怕我真的不明白的區別你的決策,這是在說,我是個白癡。你能重新字這對我來說根本,正如我所說,林很新的LINQ和數據庫應用程序和我仍然不能確定確切的術語 – SimonJohnson 2012-03-12 13:29:45

回答

1

你的兩個要求可以表示爲:

bool familyExists = db.Users.Any(u => u.familyID == famID); 
bool emailTakenAlready = db.Users.Any(u => u.emailAddress == email); 

這些似乎是獨立要求,所以你可以爲他們做單獨的查詢。

可以肯定是在LINQ的使用邏輯不(!)查詢它是有道理的,它只是一個個人風格問題。

+0

的雖然這似乎是它的工作我不是某些執行多個查詢,正是高效,但是我對linq的知識是相當有限的,所以我是誰來判斷呃? – SimonJohnson 2012-03-12 13:18:59

+0

你想檢查電子郵件是否與*系統中的任何*電子郵件相匹配,對嗎?(不只是一個地方的家庭ID匹配) – BrokenGlass 2012-03-12 13:20:33

+0

思考一下,是啊 – SimonJohnson 2012-03-12 13:27:56

0

您可以簡化它是這樣的:

public bool JoinCalendar(int famID, string email) 
    { 
     using (var db = new DataContext()) 
     { 
      var exists = db.Users.Any(u => u.familyID == famID && u.emailAddress != email); 
      if (exists) 
      { 
       return false; 
      } 
      //stuff 
      return true; 
     } 
    } 

這也應該是最有效的作爲查詢可以通過數據庫進行優化的。

+0

這似乎是完全一樣的功能我要找的類型。它似乎相當effiecient及其certianly乾淨看看,謝謝! – SimonJohnson 2012-03-12 13:15:22