Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用但基于LINQ的其他子句从集合列表中获取最早的日期_C#_Asp.net_Asp.net Mvc 5 - Fatal编程技术网

C# 如何使用但基于LINQ的其他子句从集合列表中获取最早的日期

C# 如何使用但基于LINQ的其他子句从集合列表中获取最早的日期,c#,asp.net,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc 5,我有以下代码: MostRecentLogonList.Add(最新登录) { Id=Id++, FirstName=FirstName, MiddleInitial=MiddleInitial, LastName=LastName, SAMAccountName=SAMAccountName, DifferentizedName=DifferentizedName, OU=组织单元, dnsHost=dnsHostName, lastLogon=lastLogon }); 不活动列表=不活动列

我有以下代码:

MostRecentLogonList.Add(最新登录)
{
Id=Id++,
FirstName=FirstName,
MiddleInitial=MiddleInitial,
LastName=LastName,
SAMAccountName=SAMAccountName,
DifferentizedName=DifferentizedName,
OU=组织单元,
dnsHost=dnsHostName,
lastLogon=lastLogon
});
不活动列表=不活动列表
.Where(l=>l.lastLogon s.SAMAccountName)
.Select(scope=>scope.OrderBy(l=>l.lastLogon.Last()).ToList();
“filterDays”来自输入字段,设置为90。我想做的是显示一个在过去90多天内没有在3个域控制器上登录的用户列表。上面给出了以下各项的输出:

SAMAccountName    LastLogon      DomainController
test.user1        12/31/1600     dc02
test.user2        12/31/1600     dc02
test.user5        12/31/1600     dc01
test.user4        12/31/1600     dc03
我遇到的问题是,“test.user1”在“dc01”上有一个2020年9月30日的
LastLogon
,而“test.user4”在“dc01”上也有一个2020年10月4日的
LastLogon
,因此,我根本不希望它出现在非活动列表中

我假设我必须在where子句中添加一些额外的内容,但不确定该如何翻译:


“如果samaccount名称的
LastLogon
日期小于或等于dc01上的当前日期减去90天,但自登录dc02后的
LastLogon
日期也大于90天,则不要显示它。”

您就快到了。只需要做点小小的改变。您应该应用
GroupBy
选择
lastLogon
记录,然后使用
Where
进行筛选。试试下面的方法

InactiveList = InactiveList
   .GroupBy(s => s.SAMAccountName)
   .Select(scope => scope.OrderBy(l => l.lastLogon).Last())
   .Where(l => l.lastLogon <= CurrentDate.AddDays(-filterDays))
   .ToList();
InactiveList=InactiveList
.GroupBy(s=>s.SAMAccountName)
.Select(scope=>scope.OrderBy(l=>l.lastLogon.Last())

.Where(l=>l.lastLogon您就快到了。只需做一些小的更改。您应该应用
GroupBy
&
选择
lastLogon
记录,然后使用
Where
进行筛选。请按如下方式尝试

InactiveList = InactiveList
   .GroupBy(s => s.SAMAccountName)
   .Select(scope => scope.OrderBy(l => l.lastLogon).Last())
   .Where(l => l.lastLogon <= CurrentDate.AddDays(-filterDays))
   .ToList();
InactiveList=InactiveList
.GroupBy(s=>s.SAMAccountName)
.Select(scope=>scope.OrderBy(l=>l.lastLogon.Last())

哪里(l=>l.lastLogon谢谢Karan,我会尝试一下。我不知道你真的可以这样定位。再次感谢,我会让你知道。不幸的是,它最终产生了相同的结果:/请在答案中添加小提琴进行验证。它不会产生相同的结果。你可能遗漏了一些东西。谢谢你的小提琴Karan。我会我从我的列表中导出数据,并将其放在小提琴的列表中,看看会发生什么。我的猜测是,这可能与数据表的转换有关,这些数据表的日期可能会导致LINQ筛选无法正确显示。我会向您报告。再次感谢您,我非常感谢。嗨,Karan,请查看我在MV中完成的小提琴C、 我在控制器中留下了一些评论:再次感谢Hanks Karan,我会尝试一下。我不知道你真的可以这样定位它。再次感谢,我会让你知道的。不幸的是,它最终产生了相同的结果:/Please verify in fiddle添加到了答案中。它不会产生相同的结果。你可能错过了某物。谢谢你的提琴Karan。我将从我的列表中导出数据,并将其放在你的提琴列表中,看看会发生什么。我的猜测是,它可能与数据表的转换有关,这些数据表的日期可能会导致LINQ筛选无法正确显示。我将报告。再次感谢,我非常感激嗨,卡兰,请看我的小提琴在MVC中演奏,我在控制器里留下了一些评论:再次感谢