[英]How to write not in clause in lambda expression where not in contains value from another model list
我正在嘗試編寫 lambda 表達式來獲取其他 model 列表中存在 Id 的數據。 下面的查詢返回 UserId,它將在另一個表達式中進一步用作過濾數據的鍵。
var _result = authenticationStatus.accountDetails
.GroupBy(m => m.User_Id)
.Select(m =>new AccountDetails {
User_Id= m.Key,
IsReg = m.Sum(ta => Convert.ToInt32(ta.IsRegistered))
})
.Where(m => m.IsReg > 0)
.ToList();
現在 _result 將具有 userId 屬性,該屬性將進一步用作過濾以下查詢的數據的鍵,但是每當我嘗試使用 User_id 過濾結果時,我在編譯時遇到錯誤-“無法從字符串轉換為 AccountDetail "
var authenticated = authenticationStatus.accountDetails
.Where(x=>result.Contains(x.User_Id))
.ToList();
注意 -AccountDetail 是 model,下面是 model 表示
public class AccountDetails
{
public string UserId {get;set;}
public int IsReg {get;set;}
}
您需要將User_Id
與列表中對象的屬性值進行比較,而不是與列表中的對象進行比較。
var authenticated = authenticationStatus.accountDetails
.Where(x => result.Any(y => y.UserId == x.User_Id))
.ToList();
如果結果包含 AccountDetails 列表,則 Contains 正在查找 AccountDetails object 而不是鍵。 您可以改用.Any linq 語句。 就像是
var authenticated = authenticationStatus.accountDetails
.Where(x=>result.Any(ad = > string.Equals(ad.UserId, x.User_id))
.ToList();
或者創建字典或哈希集,而不是初始查詢中的列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.