Asp.net

使用 Linq to SQL 返回單個值

  • September 27, 2011

我正在學習 Linq to SQL,但我無法掌握它。我試圖用 Linq 查詢在 C# 中簡單地返回一個(布爾)值。

我想查看故事的所有者是否希望在添加新評論時發送電子郵件通知。我希望包含 Linq to SQL 的方法返回一個布爾值。

public bool NotifyOnComment(string username){
       var notify = (from s in db.AccountSettings
                     where s.UserName == username
                     select s.NotifyOnComment).DefaultIfEmpty(false);

       // clueless
   }

更新:

我現在正在執行以下操作:

var notify = (from s in db.AccountSettings
                     where s.UserName == username
                     select s.NotifyOnComment).SingleOrDefault();

       return (bool)notify;

Linq,預設情況下總是返回集合。如果您需要單個值,則可以應用.Single().SingleOrDefault().First().FirstOrDefault()方法。

他們的工作略有不同。Single()並且SingleOrDefault()只有在結果中有確切最多一條記錄時才有效。First()並且FirstOrDefault()會工作,即使有更多的結果。

如果*OrDefault()結果不包含任何記錄,則變體將返回該類型的預設值。

var notify = (from s in db.AccountSettings
             where s.UserName == username
             select s.NotifyOnComment).DefaultIfEmpty(false).First();

//notify will either hold a bool or the AccountSettings object so
return (!(notify == false)); // Thanks Nick. Amazing what you'll do in a hurry.

引用自:https://stackoverflow.com/questions/1544322