从字典中提取键,其中值中的所有值都等于搜索值
Extract keys from Dictionary where all the values in the value are equal to searched value
var myDictionary = new Dictionary<int, List<DateTimeOffset?>>
{
{1234, new List<DateTimeOffset?> {new DateTimeOffset(DateTime.Today), null, new DateTimeOffset(DateTime.Today)}},
{2134, new List<DateTimeOffset?> {null, new DateTimeOffset(DateTime.Today), new DateTimeOffset(DateTime.Today)}},
{2345, new List<DateTimeOffset?> {null, null, new DateTimeOffset(DateTime.Today)}},
{3451, new List<DateTimeOffset?> {new DateTimeOffset(DateTime.Today).AddDays(-1), null, new DateTimeOffset(DateTime.Today)}}
};
当我按 DateTimeOffset(DateTime.Today) 搜索时,我只想 select 或提取键 1234、2134 和 2345 而不是最后一个 3451,因为并非此键的所有值都是等于搜索到的 datetimeoffset 值 DateTimeOffset(DateTime.Today) 忽略空值。
我需要一个 linq 查询。这个查询似乎可以做到,但是你如何提取字典的键???
var mySearchResult = myDictionary.Values.Where(v1 => v1.All(d2 => d2.HasValue == false || d2.Value == new DateTimeOffset(DateTime.Today)));
非常感谢任何帮助。
这对我有用:
var keys =
myDictionary
.Where(kvp => kvp.Value.All(d =>
d.HasValue == false || d.Value == new DateTimeOffset(DateTime.Today)))
.Select(kvp => kvp.Key);
我得到:
1234
2134
2345
var myDictionary = new Dictionary<int, List<DateTimeOffset?>>
{
{1234, new List<DateTimeOffset?> {new DateTimeOffset(DateTime.Today), null, new DateTimeOffset(DateTime.Today)}},
{2134, new List<DateTimeOffset?> {null, new DateTimeOffset(DateTime.Today), new DateTimeOffset(DateTime.Today)}},
{2345, new List<DateTimeOffset?> {null, null, new DateTimeOffset(DateTime.Today)}},
{3451, new List<DateTimeOffset?> {new DateTimeOffset(DateTime.Today).AddDays(-1), null, new DateTimeOffset(DateTime.Today)}}
};
当我按 DateTimeOffset(DateTime.Today) 搜索时,我只想 select 或提取键 1234、2134 和 2345 而不是最后一个 3451,因为并非此键的所有值都是等于搜索到的 datetimeoffset 值 DateTimeOffset(DateTime.Today) 忽略空值。
我需要一个 linq 查询。这个查询似乎可以做到,但是你如何提取字典的键???
var mySearchResult = myDictionary.Values.Where(v1 => v1.All(d2 => d2.HasValue == false || d2.Value == new DateTimeOffset(DateTime.Today)));
非常感谢任何帮助。
这对我有用:
var keys =
myDictionary
.Where(kvp => kvp.Value.All(d =>
d.HasValue == false || d.Value == new DateTimeOffset(DateTime.Today)))
.Select(kvp => kvp.Key);
我得到:
1234
2134
2345