【问题标题】:LINQ query to select date in tableLINQ 查询以在表中选择日期
【发布时间】:2016-06-15 05:31:57
【问题描述】:

我正在尝试从 Fouten.Datum 中选择一系列日期,但它需要包含所有 Rapporten 中的日期,并且仅适用于一个特定的 NameTrein

My SQL diagram

DateTime dateStart = CalenderSearch.SelectedDates.First();
DateTime dateEnd = CalenderSearch.SelectedDates.Last();

ObjectQuery<Fouten> fouten = eventsEntities.Foutens;
var query =
(from fout in fouten
 where dateStart <= fout.Datum && dateEnd >= fout.Datum
 orderby fout.Datum, fout.Time

 select new
 {
     Datum = fout.Datum,
     Time = fout.Time,
     FoutCode = fout.FoutCode,
     Omschrijving = fout.Omschrijving,
     Teller = fout.Teller,
     Module = fout.Module,
     FoutId = fout.FoutId

 }).AsEnumerable().Select(x => new Fouten
 {
     Datum = x.Datum,
     Time = x.Time,
     FoutCode = x.FoutCode,
     Omschrijving = x.Omschrijving,
     Teller = x.Teller,
     Module = x.Module,
     FoutId = x.FoutId
 }).ToList();

            foutensDataGrid.ItemsSource = query;

这会返回忽略外键的所有日期,所以我假设我需要在选择中的选择中选择。

例如我需要:

NameTrein='1301' 在 [Treinen] 的所有日期 * [Rapporten] 来自 [Fouten]

但我该如何共谋呢?

【问题讨论】:

    标签: c# sql wpf linq


    【解决方案1】:

    您可以将此条件添加到现有的 where 子句中:

    var query = fouten
        .Where(fout => fout.dateStart <= fout.Datum && fout.dateEnd >= fout.Datum 
        && fout.Rapporten.Treinen.NameTrein == "1301")
        .OrderBy(fout => fout.Datum)
        .ThenBy(fout => fout.Time);
    

    【讨论】:

    • 不客气。如果您需要,请随时将您的问题标记为已回答。当然,你也可以使用@mortb 建议的长语法。
    【解决方案2】:

    您可以通过加入 Rapporten 表来做到这一点。试试这个:

    from fout in fouten
    join rapport in eventsEntities.Rapporten on rapport.RaportId equals fout.RaportId into fout_rapport
    where dateStart <= fout.Datum && dateEnd >= fout.Datum && rapport.NameTrein='1301'
    orderby fout.Datum, fout.Time
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 2018-03-20
      相关资源
      最近更新 更多