shaprpuff Ответов: 1

Как я могу использовать один метод C# со списком параметров с нулевым значением?


у меня есть 4 входных значения employeeid, requestnumber,startdate,enddate

я создал метод, чтобы действовать так, как он возвращает результат на основе параметра, который я передаю ему, например, если мне нужен результат по идентификатору сотрудника, поэтому я просто передаю

BindingGrid(null, null, null, employeeid)
или
BindingGrid(null, null,requestnumber, null)
или
BindingGrid(начальная дата,конечная дата,нуль,нуль)

Что я уже пробовал:

<pre lang="c#">
<pre> public void BindingGrid(DateTime? start,DateTime? end,int? requestnumber,string? employeeid) 
    
    {
        var query = ctx.tbl.Where(x => 
(
x.CreatedDate.Value.Year >= start.Value.Year  &&                                                             x.CreatedDate.Value.Month>=start.Value.Month  &&                                                           x.CreatedDate.Value.Day  >=start.Value.Day     
)  
&&  
(
x.CreatedDate.Value.Year <= end.Value.Year &&
x.CreatedDate.Value.Month <= end.Value.Month && 
x.CreatedDate.Value.Day <= end.Value.Day 
)
&& ( x.resuestid=requestnumber)
//this throw error : best overload method match for string.contains(string) has invalid arguments  

&& ( x.RequestorEmployeeID.Contains(employeeid) ) ).ToList();
        gridReport.DataSource = query;
        gridReport.DataBind();
    }

Karthik_Mahalingam

в чем проблема?

1 Ответов

Рейтинг:
1

Graeme_Grant

Вы используете типы, допускающие значение null, а не проверки, если это имеет значение:

var query = ctx.tbl.Where(x => x.CreatedDate.HasValue &&
    (x.CreatedDate.Value.Year >= start.Value.Year &&
     x.CreatedDate.Value.Month>=start.Value.Month &&
     x.CreatedDate.Value.Day  >=start.Value.Day) &&
    (x.CreatedDate.Value.Year <= end.Value.Year &&
     x.CreatedDate.Value.Month <= end.Value.Month &&
     x.CreatedDate.Value.Day <= end.Value.Day) &&
    (x.resuestid == requestnumber) &&
    (x.RequestorEmployeeID.Contains(employeeid)));