저는 특정 데이터에 대해 필터 방법의 일부 형식을 활용하기 위해 정말로 싸우고 있습니다. 하위 필터링에 대한 걱정없이 장치 필터링 (아래 클래스 참조) List<DeviceQueue>
은 예상대로 완벽하게 작동합니다. 그러나 MessageId 및/또는 SequenceId에서 필터링하려고하면 결과는 내 필터를 무시하고 MessageQueue 테이블의 모든 항목을 반환합니다. 장치에 대한Linq To Entities - 목록의 필터
참조 Data.Model : DeviceQueue에 대한
public class Device : EntityBase
{
public string SerialNumber { get; set; }
public virtual DeviceType DeviceType { get; set; }
public virtual List<DeviceQueue> MessageQueue { get; set; }
}
참조 Data.Model :
public class DeviceQueue : EntityBase
{
public string MessageId { get; set; }
public Int32 SequenceId { get; set; }
필터 방법을 참조하십시오
(1 제안 대답 다음 업데이트) : 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;
}
당신은 달성하려는 것을 말하지 않습니다. –
내 잘못, 실종 된 정보. 지금보십시오 :) thanks – David
아직 명확하지 않습니다. 여기에 실제 프로젝트를 배치 할 필요없이 ** 최소 ** 데모를 작성하십시오. –