我想使用Linq Where/Select
過濾List
,使用程序中顯示的Dictionary
中的鍵值,我當前的解決方案有許多限制。使用字典鍵過濾列表
Dictionary
引用來自UI的用戶輸入,因此它可能包含一組值而不是給定鍵的單個值。
任何指針,以幫助我一個正確的方向。
public class Business
{
public int ID { get; set; }
public string NAME { get; set; }
}
void Main()
{
var businessList = new List<Business>
{
new Business {ID = 1,NAME = "A"},
new Business {ID = 1,NAME = "B"},
new Business {ID = 1,NAME = "C"},
new Business {ID = 2,NAME = "D"},
new Business {ID = 2,NAME = "E"},
new Business {ID = 2,NAME = "F"},
new Business {ID = 3,NAME = "G"},
new Business {ID = 4,NAME = "H"},
new Business {ID = 4,NAME = "I"},
new Business {ID = 4,NAME = "J"},
new Business {ID = 5,NAME = "K"},
new Business {ID = 5,NAME = "L"}
};
var filterDictionary = new Dictionary<string, object>
{
{"ID",3},
{"NAME","G"}
};
Expected Result:
ID Name
3 G
var filterDictionary = new Dictionary<string, object>
{
{"ID",new List<int>(){2,3}}
};
Expected Result:
ID Name
2 D
2 E
2 F
3 G
Current Solution:
var result = businessList
.Select(x => filterDictionary.ContainsKey(typeof(Business).GetProperty("ID").Name) ?
x.ID == (int)filterDictionary[typeof(Business).GetProperty("ID").Name] ? x : null : null
)
.Where(x => x!= null)
.Select(x => filterDictionary.ContainsKey(typeof(Business).GetProperty("NAME").Name) ?
x.NAME == (string)filterDictionary[typeof(Business).GetProperty("NAME").Name] ? x : null : null
);
}
什麼是預期的輸出?業務對象的ID = 3和名稱= G?或者ID = 3或名稱= G?字典可以包含兩個以上的項目嗎? –
結果應該是這些值的組合,即ID = 3 AND Name = G out。是的,它可以包含在幾個角落案件中不屬於商業實體一部分的密鑰,但截至現在,我可以假設字典只能包含有效密鑰 –
但是在這種情況下,這意味着有三個或四個項目在字典中?例如,如果字典包含以下內容:ID = 2,ID = 4,NAME = E? NAME = H? –