I 현재 다음과 같은 방법이 있습니다된 IQueryable
내가 할 필요 무엇 public List<Order> GetOrders(int profileId, string timeSpan, string workOrd, string partNo, bool includeDeleted)
{
DateTime startDate = DateTime.Now;
DateTime endDate = DateTime.Now;
string[] times = (!string.IsNullOrWhiteSpace(timeSpan)) ? timeSpan.Trim().Split('-') : new string[] { "", "" };
if (!string.IsNullOrWhiteSpace(times[0]) && !string.IsNullOrWhiteSpace(times[0]))
{
startDate = DateTime.Parse(times[0]).Date;
endDate = DateTime.Parse(times[1]).Date;
}
//New Real Query
IQueryable<Order_Travel> otQuery = _context.Order_Travels.Where(x =>
(profileId != 0 || x.Profile.ProfileID == profileId)
&& ((timeSpan == null || timeSpan.Trim() == "") || ((DbFunctions.TruncateTime(x.TimeRecieved) >= startDate)
&& (DbFunctions.TruncateTime(x.TimeRecieved) <= endDate)))
&& ((workOrd == null || workOrd.Trim() == "") || x.Order.WorkOrdNo == workOrd)
&& ((partNo == null ||partNo.Trim() == "") || x.Order.PartNo == partNo)
&& (!includeDeleted || x.Aborted == true));
//The results is now in order_travel. Under here binding them to a list of orders with only the respective orderTravels included.
List<Order> orders = new List<Order>();
List<Order_Travel> ots = otQuery.ToList();
foreach (Order_Travel ot in ots)
{
var OrderInList = orders.FirstOrDefault(X => X == ot.Order);
if (OrderInList == null)
{
orders.Add(ot.Order);
OrderInList = orders.FirstOrDefault(X => X == ot.Order);
OrderInList.OrderTravels.Clear();
OrderInList.OrderTravels.Add(ot);
}
else
{
OrderInList.OrderTravels.Add(ot);
}
}
return orders;
}
, (I 시도했듯이)이며, 전화를 만드는 paramters 일치하는 모든 Order_Travel 개체를 발견하기를 그것을 보냈습니다. 일부 (또는 모두)를 비워두면 값에 관계없이 모든 것을 취합니다. 빈 검색 (매개 변수가없는 검색)이 있으면이 코드는 현재 아무 것도 반환하지 않으며 문제가 무엇인지 알 수 없습니다. 디버깅을 시도했지만 운이 없었습니다.
도움이 될 것입니다.
감사합니다!
(profileId != 0 || x.Profile.ProfileID == profileId)
그것은 당신의 프로필 ID가 0이면, 그것은 단지 x.Profile.ProfileID
이 0
인으로 항목을 찾을 수
(profileId == 0 || x.Profile.ProfileID == profileId)
을해야한다 :
고맙습니다! 나는 내 자신의 코드를 보면서 장님을 쳐다 보았다. 이것은 내가 가진 문제를 해결했습니다. –
방금했습니다. 감사! :) –