亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Linq to Entities - SQL“IN”子句

Linq to Entities - SQL“IN”子句

LEATH 2019-07-25 14:14:10
Linq to Entities - SQL“IN”子句在T-SQL中,您可以進行如下查詢:SELECT * FROM Users WHERE User_Rights IN ("Admin", "User", "Limited")您如何在LINQ to Entities查詢中復制它?它甚至可能嗎?
查看完整描述

3 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

你需要根據你的想法來改變它。如果它包含當前項目的適用值,您將詢問一組預定義的用戶權限,而不是“在”中查找當前項目在預定義的一組適用用戶權限中的用戶權限。這與在.NET中的常規列表中找到項目的方式完全相同。

使用LINQ有兩種方法,一種使用查詢語法,另一種使用方法語法?;旧?,它們是相同的,可以根據您的偏好互換使用:

查詢語法:

var selected = from u in users               where new[] { "Admin", "User", "Limited" }.Contains(u.User_Rights)
               select uforeach(user u in selected){
    //Do your stuff on each selected user;}

方法語法:

var selected = users.Where(u => new[] { "Admin", "User", "Limited" }.Contains(u.User_Rights));foreach(user u in selected){
    //Do stuff on each selected user;}

我在這個實例中的個人偏好可能是方法語法,因為我可以通過這樣的匿名調用來代替分配變量:

foreach(User u in users.Where(u => new [] { "Admin", "User", "Limited" }.Contains(u.User_Rights))){
    //Do stuff on each selected user;}

從語法上看,這看起來更復雜,你必須理解lambda表達式或委托的概念才能真正弄清楚發生了什么,但正如你所看到的,這會使代碼壓縮很多。

這一切都取決于你的編碼風格和偏好 - 我的三個例子都做了同樣的事情。

另一種方法甚至不使用LINQ,您可以使用相同的方法語法將“where”替換為“FindAll”并獲得相同的結果,這也將在.NET 2.0中起作用:

foreach(User u in users.FindAll(u => new [] { "Admin", "User", "Limited" }.Contains(u.User_Rights))){
    //Do stuff on each selected user;}



查看完整回答
反對 回復 2019-07-26
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

在這種情況下,我會選擇Inner Join。如果我會使用contains,它會迭代6次,盡管事實上只有一個匹配。

var desiredNames = new[] { "Pankaj", "Garg" }; var people = new[]  {  
    new { FirstName="Pankaj", Surname="Garg" },  
    new { FirstName="Marc", Surname="Gravell" },  
    new { FirstName="Jeff", Surname="Atwood" }  }; var records = (from p in people join filtered in desiredNames on p.FirstName equals filtered  select p.FirstName).ToList();

包含的缺點

假設我有兩個列表對象。

List 1      List 2
  1           12
  2            7
  3            8
  4           98
  5            9
  6           10
  7            6

使用Contains,它將搜索List 2中的每個List 1項,這意味著迭代將發生49次!




查看完整回答
反對 回復 2019-07-26
  • 3 回答
  • 0 關注
  • 235 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號