C# LINQ当前记录和两侧的x个记录数
我有一个C# LINQ当前记录和两侧的x个记录数,c#,linq,C#,Linq,我有一个列表,在术语中有Id、StartDate和EndDate 我想使用LINQ对当前术语过滤列表,并返回当前术语两侧的x记录数 本质上,名为GetTerms(cntBefore,cntAfter)的方法需要: 查询术语数据 查找当前术语StartDate如果您在列表中工作,使用索引非常简单: // We suppose data is sorted by StartDate IList<Term> GetNeighborhood(IList<Term> data,
列表
,在术语中有Id
、StartDate
和EndDate
我想使用LINQ对当前术语过滤列表
,并返回当前术语两侧的x
记录数
本质上,名为GetTerms(cntBefore,cntAfter)
的方法需要:
查询术语
数据
查找当前术语StartDate如果您在列表中工作,使用索引非常简单:
// We suppose data is sorted by StartDate
IList<Term> GetNeighborhood(IList<Term> data, int beforeCount, int afterCount)
{
var now = DateTime.Now;
var current = data.Single(d => d.StartDate <= now && now <= d.EndDate);
var currentIndex = data.IndexOf(current);
var startIndex = Math.Max(0, currentIndex - beforeCount);
var endIndex = Math.Min(data.Count, currentIndex + afterCount);
var resultCount = endIndex - startIndex + 1;
return data.Skip(startIndex).Take(resultCount).ToList();
}
//我们假设数据是按起始日期排序的
IList GetNeighbory(IList数据,int beforeCount,int afterCount)
{
var now=DateTime.now;
var current=data.Single(d=>d.StartDate如果您在列表中工作,那么使用索引非常简单:
// We suppose data is sorted by StartDate
IList<Term> GetNeighborhood(IList<Term> data, int beforeCount, int afterCount)
{
var now = DateTime.Now;
var current = data.Single(d => d.StartDate <= now && now <= d.EndDate);
var currentIndex = data.IndexOf(current);
var startIndex = Math.Max(0, currentIndex - beforeCount);
var endIndex = Math.Min(data.Count, currentIndex + afterCount);
var resultCount = endIndex - startIndex + 1;
return data.Skip(startIndex).Take(resultCount).ToList();
}
//我们假设数据是按起始日期排序的
IList GetNeighbory(IList数据,int beforeCount,int afterCount)
{
var now=DateTime.now;
var current=data.Single(d=>d.StartDate)您是处理对象(List
)还是处理BDD(您将实体框架标记放在这里)?Hi@Orace,我处理对象。不是BDDDo您是处理对象(List
)还是处理BDD(您将实体框架标记放在这里)?嗨@Orace,我在处理对象。不是BDD谢谢你@Orace…我应该想到这个:)谢谢你@Orace…我应该想到这个:)谢谢