【问题标题】:Linq Query Either Null Exception or No ResultsLinq 查询空异常或无结果
【发布时间】:2017-01-24 16:10:06
【问题描述】:

我正在处理以下我无法开始工作的 Linq 查询。我的问题是我得到一个空引用或没有结果(如果我在我的 for 循环中保留“if”语句)。该查询应该按 event_number 提供前 20 个结果时间。

var queryByEventNumber = EventNumbers
.GroupJoin(EntryEvents, e => e.Id, ee => ee.EventNumberId, (e, g) => new
{
    EventNumber = e,
    EntryEvents = g
})
.OrderBy(e => e.EventNumber.Event_Number);

foreach (var group in queryByEventNumber)
{
    Console.WriteLine($"EventNumber: { group.EventNumber.Event_Number}");

//If statement apparently always returns false at this point
//If I remove if statement, I get a null reference on group.EntryEvents.OrderBy(r => r.Result.AdjustTime)...

    if(Results.Any(r => r.EntryEvents.Any(g => g.EventNumberId == group.EventNumber.Id)))
    {
        foreach (var result in group.EntryEvents.OrderBy(r => r.Result.AdjustedTime).Take(20))
        {
            Console.WriteLine($"\t\t{result.Result.AdjustedTime} : {result.Result.DateCreated.Year}");
        }
    }
}

问题是我没有每个事件编号的结果(最终我会,但我相信我需要能够以任何一种方式处理它)。我尝试了 if 语句的一些变体,但没有运气。任何帮助表示赞赏。谢谢!

【问题讨论】:

  • 你能不能把if(Results.Any(r => r.EntryEvents.Any改成if(Results.Any(r => r.EntryEvents.Where
  • 试过了,但我得到一个无法将 IEnumerable 转换为 bool。
  • EventNumbersEntryEvents变量的类型是什么?
  • EventNumbers 和 EntryEvents 都是类/对象。 EventNumbers 包含“Id”,即 EntryEvents.EventNumberId。
  • 问题是它们是内存集合还是数据库表访问器(例如 EF DbSets 或类似的 IQueryables)

标签: c# linq asp.net-core


【解决方案1】:

好的,经过大量试验和错误,我采用了这个解决方案。不确定它是否是最佳的,但它可以工作......

var eventNumbers = EventNumbers.Where(e => e.Active).OrderBy(e => e.Event_Number).ToList();

foreach (var en in EventNumbers)
{
    Console.WriteLine($"EventNumber: {en.Event_Number}");

    var results = Results
    .Where(r => r.EntryEvent.EventNumberId == en.Id && !r.Disqualified && r.Active && !r.EntryEvent.Scratched)
    .OrderBy(r => r.AdjustedTime)
    .Take(20);
    if (results != null)
    {
        foreach (var result in results)
        {
            Console.WriteLine($"Time: {result.AdjustedTime}");
        }
    }
}

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    相关资源
    最近更新 更多