选择对象并添加到列表linq c#

选择对象并添加到列表linq c#,c#,asp.net,linq,C#,Asp.net,Linq,可能是一个简单的问题,但仍然是初学者,不知道如何。。。。 每个工作站都可以有许多发票,因此我下面的代码将 存储所有工作站,检查每个工作站, 获取该工作站的最后(最新)发票, 如果发票日期(对于最近的发票)小于12个月 将其添加到站点列表中。。。 编辑: 谢谢大家的帮助,但我正试图通过c#来做到这一点,并避免你们提到的LINQ搜索…谢谢大家的回复 我的新问题是我需要将ChosenInvoices列表按升序排序并返回第一个…因为我认为它正在选择列表中的任何人: var allWorkSites =

可能是一个简单的问题,但仍然是初学者,不知道如何。。。。 每个工作站都可以有许多发票,因此我下面的代码将

存储所有工作站,检查每个工作站,
获取该工作站的最后(最新)发票,
如果发票日期(对于最近的发票)小于12个月

将其添加到站点列表中。。。 编辑: 谢谢大家的帮助,但我正试图通过c#来做到这一点,并避免你们提到的LINQ搜索…谢谢大家的回复

我的新问题是我需要将ChosenInvoices列表按升序排序并返回第一个…因为我认为它正在选择列表中的任何人:

 var allWorkSites =
            (from worksites in db.Work_Sites
             select worksites).Distinct().ToList();
    List<Object> chosenInvoices = new List<Object>();

    foreach (Work_Site worksite in allWorksites)
    {
        Invoice lastInvoice = worksite.Invoices.LastOrDefault();

        if (lastInvoice != null)
        {
            if (lastInvoice.Invoice_Date < DateTime.Now.AddMonths(-12))
            {
                chosenInvoices.Add(workstation);
            }
        }
    }
var所有工作站点=
(来自db.Work_现场的工地)
选择工作站点)。不同().ToList();
列表选择发票=新列表();
foreach(所有工地中的工地)
{
发票lastInvoice=工作站点.Invoices.LastOrDefault();
如果(lastInvoice!=null)
{
如果(lastInvoice.Invoice_日期
所有工作站
.Where(w=>w.Invoices.Last().Invoices_Datelist.add(w));
或者更好:

List<Work_Station> list = db.Work_Stations
    .Distinct()
    .Where(w => w.Invoices.Last().Invoice_Date < DateTime.Now.AddMonths(-12))
    .ToList();
List List=db.Work\u站
.Distinct()
.Where(w=>w.Invoices.Last().Invoices_Date
所有工作站
.Where(w=>w.Invoices.Last().Invoices_Datelist.add(w));
或者更好:

List<Work_Station> list = db.Work_Stations
    .Distinct()
    .Where(w => w.Invoices.Last().Invoice_Date < DateTime.Now.AddMonths(-12))
    .ToList();
List List=db.Work\u站
.Distinct()
.Where(w=>w.Invoices.Last().Invoices_Date
var所有工作站=
(从db.Work_站中的工作站)
where workstation.Invoices.Last().Invoices\u Date
var所有工作站=
(从db.Work_站中的工作站)
where workstation.Invoices.Last().Invoices\u Date
以下代码将创建去年有发票的工作站列表

var checkDate = DateTime.Now.AddMonths(-12);

var resultList = db.Work_Stations
  .Distinct()
  .Select(ws => new {Ws = ws, Li = ws.Invoices.OrderBy(i => i.Invoice_Date).LastOrDefault()})
  .Where(item => item.Li != null && Li.Invoice_Date < checkDate)
  .Select(item => item.Ws)
  .ToList();
var checkDate=DateTime.Now.AddMonths(-12);
var resultList=db.Work\u站
.Distinct()
.Select(ws=>new{ws=ws,Li=ws.Invoices.OrderBy(i=>i.Invoices\u Date).LastOrDefault())
.Where(item=>item.Li!=null&&Li.Invoice\u日期item.Ws)
.ToList();

以下代码将创建去年有发票的工作站列表

var checkDate = DateTime.Now.AddMonths(-12);

var resultList = db.Work_Stations
  .Distinct()
  .Select(ws => new {Ws = ws, Li = ws.Invoices.OrderBy(i => i.Invoice_Date).LastOrDefault()})
  .Where(item => item.Li != null && Li.Invoice_Date < checkDate)
  .Select(item => item.Ws)
  .ToList();
var checkDate=DateTime.Now.AddMonths(-12);
var resultList=db.Work\u站
.Distinct()
.Select(ws=>new{ws=ws,Li=ws.Invoices.OrderBy(i=>i.Invoices\u Date).LastOrDefault())
.Where(item=>item.Li!=null&&Li.Invoice\u日期item.Ws)
.ToList();

即使发票不符合日期顺序,此操作仍有效:

invoiceLst.AddRange(allWorkStations
    .Where(w => w.Invoices.Max(i => i.Invoice_Date) < DateTime.Now.AddMonths(-12)));
invoiceLst.AddRange(所有工作站)
其中(w=>w.Invoices.Max(i=>i.Invoices_Date)
即使发票不符合日期顺序,此操作仍有效:

invoiceLst.AddRange(allWorkStations
    .Where(w => w.Invoices.Max(i => i.Invoice_Date) < DateTime.Now.AddMonths(-12)));
invoiceLst.AddRange(所有工作站)
其中(w=>w.Invoices.Max(i=>i.Invoices_Date)
列出当前情况=db.Work\u Stations.Distinct()
.Where(w=>w.Invoices.Last().Invoices_Datew.Invoices.Last()).ToList();
此代码将返回每个工作站最近的发票列表

要在关联订单列表中对发票进行排序,请使用方法OrderBy(),使用此方法进行排序,然后使用第一种方法

另外,列表具有排序()方法。

列表实现OICES=db.Work\u Stations.Distinct()
.Where(w=>w.Invoices.Last().Invoices_Datew.Invoices.Last()).ToList();
此代码将返回每个工作站最近的发票列表

要在关联订单列表中对发票进行排序,请使用方法OrderBy(),使用此方法进行排序,然后使用第一种方法


还列出了排序方法。

在站点列表中添加什么?发票对象还是工作站对象?什么是站点列表?你的书里什么都没有example@ryadavilli添加发票对象thanks@Ph0en1x抱歉,这意味着是工作站。您的类/列表设计有问题,您想检查所有工作站,然后获取每个工作站的最后一张发票,然后将发票添加到您的工作站列表中吗?您需要更好地命名类,或者需要重新查看逻辑。在站点列表中添加什么?发票对象还是工作站对象?什么是站点列表?你的书里什么都没有example@ryadavilli添加发票对象thanks@Ph0en1x抱歉,这意味着是工作站。您的类/列表设计有问题,您想检查所有工作站,然后获取每个工作站的最后一张发票,然后将发票添加到您的工作站列表中吗?你需要更好地命名你的类,或者需要重新审视你的逻辑。我认为你不能绝对肯定
Last()
会返回带有最新日期的元素。我想这很难说,因为我们对它知之甚少。我仍然不能100%确定问题是否正确。我认为您不能绝对肯定
Last()
将返回包含最新日期的元素。我认为很难确定,因为我们对它知之甚少。我仍然不能百分之百确定这个问题是否正确。