C# 按日期列表筛选列表
我有一个包含DateTimeOffset属性的对象列表。 我想筛选该列表,以便只有其日期与另一个日期列表中的日期匹配的对象 例如,如果对象列表包含以下日期时间属性:C# 按日期列表筛选列表,c#,linq,C#,Linq,我有一个包含DateTimeOffset属性的对象列表。 我想筛选该列表,以便只有其日期与另一个日期列表中的日期匹配的对象 例如,如果对象列表包含以下日期时间属性: {Test1, 12/1/2020}, {Test2, 12/2/2020}, {Test3, 12/3/2020} 还有另一份名单 12/1/2020 12/2/2020. 只有 应该返回您可以将Where()和Contains() 样本数据: var data = new [] { new { Name="
{Test1, 12/1/2020},
{Test2, 12/2/2020},
{Test3, 12/3/2020}
还有另一份名单
12/1/2020
12/2/2020.
只有
应该返回您可以将
Where()
和Contains()
样本数据:
var data = new [] {
new { Name="Test1", Date = new DateTimeOffset(2020,12,1,0,0,0,TimeSpan.Zero) },
new { Name="Test2", Date = new DateTimeOffset(2020,12,2,0,0,0,TimeSpan.Zero) },
new { Name="Test3", Date = new DateTimeOffset(2020,12,3,0,0,0,TimeSpan.Zero) },
};
var filter = new[] {
new DateTimeOffset(2020,12,1,0,0,0,TimeSpan.Zero),
new DateTimeOffset(2020,12,2,0,0,0,TimeSpan.Zero),
};
筛选:
var filteredData = data.Where(p => filter.Contains(p.Date)).ToArray();
您可以组合
Where()
和Contains()
样本数据:
var data = new [] {
new { Name="Test1", Date = new DateTimeOffset(2020,12,1,0,0,0,TimeSpan.Zero) },
new { Name="Test2", Date = new DateTimeOffset(2020,12,2,0,0,0,TimeSpan.Zero) },
new { Name="Test3", Date = new DateTimeOffset(2020,12,3,0,0,0,TimeSpan.Zero) },
};
var filter = new[] {
new DateTimeOffset(2020,12,1,0,0,0,TimeSpan.Zero),
new DateTimeOffset(2020,12,2,0,0,0,TimeSpan.Zero),
};
筛选:
var filteredData = data.Where(p => filter.Contains(p.Date)).ToArray();
试试这个
List<DateTime> dateList = new List<DateTime>();
List<DateObject> objectList = new List<DateObject>();
var filteredList = objectList.Where(a => dateList.Contains(a.Date));
List dateList=newlist();
List objectList=新列表();
var filteredList=objectList.Where(a=>dateList.Contains(a.Date));
选中此项:
试试这个
List<DateTime> dateList = new List<DateTime>();
List<DateObject> objectList = new List<DateObject>();
var filteredList = objectList.Where(a => dateList.Contains(a.Date));
List dateList=newlist();
List objectList=新列表();
var filteredList=objectList.Where(a=>dateList.Contains(a.Date));
选中此项:
根据标签,显然你已经知道你可以用LINQ来实现这一点。到目前为止你尝试了什么?显然你已经知道,根据标签,你可以用LINQ做到这一点。到目前为止,您尝试了什么?当
数据
和/或过滤器
的条目数增加时,可能需要将过滤器
转换为哈希集
,其中包含的
应该是O(1),而不是O(n),因为数组和列表都是这样。但是,构建和填充一个集合的成本更高,因此您可能需要进行一些基准测试,以确定适合您的案例的最佳点。当数据
和/或过滤器
的条目数变得更高时,将过滤器
转换为哈希集
,其中包含的
应该是O(1)而不是像数组和列表那样的O(n)。但是,构建和填充一个集合的成本更高,因此您可能需要进行一些基准测试,以找出适合您的案例的最佳点。