【问题标题】:Refining an Entity Framework result set using LINQ使用 LINQ 优化实体框架结果集
【发布时间】:2014-01-11 08:51:29
【问题描述】:

我正在尝试优化一组 EF 结果。我有以下行抓住所有实体:

var results = context.Referrals.ToList();

这很好。当我尝试有条件地细化列表时,我突然有一个空列表。例如:

if (filterByReferrerName)
   results = results.Where(x => x.ReferrerName.Contains("John Doe")).ToList();

我知道该初始列表中有一个项目的 ReferrerName 为“John Doe”,但不明白为什么我的结果集在 .Where 子句之后突然为空。

我在这里做错了什么?

【问题讨论】:

  • 当您使用ToList 获取所有数据时,后一个过滤器将在内存中完成并且区分大小写。这可能会导致您丢失数据吗?
  • 糟糕!道歉约阿希姆,我写了更多的测试,你是完全正确的。如果不是评论,我会接受您的回复!

标签: c# linq entity-framework search


【解决方案1】:

如果“ReferrerName”是引用类上的复杂类型,并且您没有使用延迟加载,则必须使用急切加载并将该复杂类型包含在查询中,请参阅:

var results = 
      context
     .Referrals
     .Include("ReferrerName")
     .Where(x => x.ReferrerName.Contains("John Doe"))
     .ToList();

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多