第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

LINQ to object 和通用 PredicateBuilder 似乎不能很好地協(xié)同工作

LINQ to object 和通用 PredicateBuilder 似乎不能很好地協(xié)同工作

C#
瀟湘沐 2021-10-24 19:47:11
我有一個場景使用下面的代碼來簡化這里的解釋。我有一個模型類class Model{    public string CodeLevel1 { get; set; }    public string CodeLevel2 { get; set; }    public bool IsVoluntary { get; set; }}很明顯,我將建立一個對象列表        var models = new List<Model>        {            new Model()            {                CodeLevel1 = "32",                CodeLevel2 = "A1",                IsVoluntary = false            },            new Model()            {                CodeLevel1 = "32",                CodeLevel2 = "A2",                IsVoluntary = true            },            new Model()            {                CodeLevel1 = "33",                CodeLevel2 = "A3",                IsVoluntary = true            },            new Model()            {                CodeLevel1 = "34",                CodeLevel2 = "A4",                IsVoluntary = false            },            new Model()            {                CodeLevel1 = "34",                CodeLevel2 = "A5",                IsVoluntary = false            },            new Model()            {                CodeLevel1 = "34",                CodeLevel2 = "A6",                IsVoluntary = true            },        };我想使用通用PredicateBuilder 中引入的PredicateBuilder來構(gòu)建動態(tài)查詢。以下代碼只是我嘗試的第一步。var configs = new Dictionary<string, List<string>>(){    { "32", new List<string>() { "A1", "A2"} },    { "33", new List<string>() { "A3" } },};var predicate = PredicateBuilder.False<Model>();var allLevel1CodesInConfig = (from c in configs select c.Key).ToList();predicate.Or(x => !allLevel1CodesInConfig.Contains(x.CodeLevel1) && x.IsVoluntary == false);var filteredList = models.AsQueryable().Where(predicate).ToList();我在 . 中什么也沒得到filteredList,但是如果我重寫最后一行代碼,我就會得到我所期望的。var filteredList = models.AsQueryable().Where(x => !allLevel1CodesInConfig.Contains(x.CodeLevel1) && x.IsVoluntary == false).ToList();我需要一些幫助來理解為什么謂詞 inWhere對我不起作用?
查看完整描述

1 回答

?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗 獲得超7個贊

問題出在這一行:

predicate.Or(x => !allLevel1CodesInConfig.Contains(x.CodeLevel1) && x.IsVoluntary == false);

將其更改為:

predicate = predicate.Or(x => !allLevel1CodesInConfig.Contains(x.CodeLevel1) && x.IsVoluntary == false);

每種PredicateBuilder方法都會創(chuàng)建一個新的謂詞,并且不會改變原始謂詞。


查看完整回答
反對 回復(fù) 2021-10-24
  • 1 回答
  • 0 關(guān)注
  • 234 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號