продолжение вопроса здесь: How to write dynamic Linq to count matching numbersматч все билеты на определенный день
У меня есть две таблицы здесь, которые я запрашивая для сравнения чисел. В одном билете есть много билетов.
Ticket:
TicketId, Name, AddDateTime
TicketNumbers:
Id, TicketId, Number
В настоящее время у меня есть эта функция, которая получает совпадение, которое я хочу. Это довольно загадочно для меня - я не знаю, как кто-то зачитал этот Linq на простом английском.
public int CountPartialMatchingTicket(IList<int> numbers)
{
var arr = numbers.ToArray();
int count = db.Tickets.Count(
tk=>arr.All(n=> tk.TicketNumbers.Any(tn=>tn.Number== n)));
return count;
}
Однако Linq выше соответствует номерам билетов на все время. Я хочу получить матчи всего за один день. Весь день. Поэтому для этого нам нужно включить предложение where, которое проверяет атрибут AddDateTime.
public int CountPartialMatchingTicket(IList<int> numbers, DateTime day) {
}
Я очень новичок в Linq, поэтому, пожалуйста, объясните синтаксис вашего решения. Спасибо за помощь!
Сравнение свойства DateTime также сравнивает время, которое не задавал вопрос. Изменить: вы отредактировали, чтобы добавить свойство DateTime.Date, которое не будет работать для EntityFramework (мое предположение из-за ссылки db). – mfanto
@mfanto, я упомянул, что ему, возможно, придется проверять другие свойства, я оставил его, потому что я не хотел загромождать код. –
Спасибо за этот ответ! .Date не в Linq ... поэтому в конце я использую: Where (tk => tk.PlayDateTime.Year == DateRule.Year && tk.PlayDateTime.Month == DateRule.Month && tk.PlayDateTime.Day == DateRule.День) –