【发布时间】:2017-03-20 02:14:30
【问题描述】:
我真的在努力为某些特定数据使用某种形式的过滤方法。过滤设备(参见下面的课程)而不用担心过滤子 List<DeviceQueue> 可以按预期完美工作。但是,当我尝试过滤说 MessageId 和/或 SequenceId 时,结果会返回 MessageQueue 表中的所有条目,而忽略我的过滤器。
查看设备的 Data.Model :
public class Device : EntityBase
{
public string SerialNumber { get; set; }
public virtual DeviceType DeviceType { get; set; }
public virtual List<DeviceQueue> MessageQueue { get; set; }
}
查看 DeviceQueue 的 Data.Model :
public class DeviceQueue : EntityBase
{
public string MessageId { get; set; }
public Int32 SequenceId { get; set; }
查看过滤方法(根据第一个建议的答案更新):
public IQueryable<Device> Filter(IQueryable<Device> device)
{
IQueryable<DeviceQueue> deviceQueue = Enumerable.Empty<DeviceQueue>().AsQueryable();
//Because it is IQueryable, the data is not fetched until you bind it so it only pulls the data you need.
if (DeviceId != null)
{
device = device.Where(d => d.Id == DeviceId);
}
if (SequenceId != null)
{
device = device.Where(d => d.MessageQueue.Any(q => q.SequenceId == SequenceId.Value));
}
if (MessageId != null)
{
device = device.Where(d => d.MessageQueue.Any(q => q.MessageId == MessageId));
}
return device;
}
【问题讨论】:
-
你不知道你想要达到什么目的。
-
我的错,确实缺少信息。现在看看 :) 谢谢 :)
-
还是不清楚。你不必把你的真实项目放在这里,而是放一个minimal演示。
-
抱歉,发布此内容已经很晚了。我会改写我的帖子并更新。
标签: c# sql entity-framework linq linq-to-entities