AsEnumerable Динамические поля в где и выберите - PullRequest
0 голосов
/ 03 сентября 2018

Я хочу использовать отдельное предложение для нескольких уровней. Сначала я попытался с DataTable, но не добился успеха, поэтому я преобразовал DataTable в AsEnumerable.

Моя проблема в том, что поля, которые я указал / жестко запрограммировал, будут динамичными, то же самое для Where & Select.

Как добавить динамические поля в Where & Select?

DataTable data3 = new DataTable();
var listData = data3.AsEnumerable()
               .Where(m => !String.IsNullOrEmpty(m.Field<string>("clientname"))
               && !String.IsNullOrEmpty(m.Field<string>("project"))
               && !String.IsNullOrEmpty(m.Field<string>("postedstate"))
               && !String.IsNullOrEmpty(m.Field<string>("postedcity"))
               && !String.IsNullOrEmpty(m.Field<string>("siteadd")))
               .Select(row => new
                {
                   clientname = row.Field<string>("clientname"),
                   project = row.Field<string>("project"),
                   postedstate = row.Field<string>("postedstate"),
                   postedcity = row.Field<string>("postedcity"),
                   siteadd = row.Field<string>("siteadd")
                }).Distinct();

1 Ответ

0 голосов
/ 03 сентября 2018

Вы можете сделать что-то похожее на это:

string clientName = "my client";
string project = null;

DataTable data3 = new DataTable();
var listData = data3.AsEnumerable().Where(m => 
    (String.IsNullOrEmpty(clientName) || m.Field<string>("clientname") == clientName)
    && (String.IsNullOrEmpty(project) || m.Field<string>("project") == project)
).Select(row => new Project()
{
    clientname = row.Field<string>("clientname"),
    project = row.Field<string>("project"),
    postedstate = row.Field<string>("postedstate"),
    postedcity = row.Field<string>("postedcity"),
    siteadd = row.Field<string>("siteadd")
}).Distinct();

Таким образом, вам не нужно возвращать анонимный тип и избавляться от проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...