Как я могу изменить этот запрос LINQ, чтобы использовать мой список <int>вместо номера с жестким кодом? - PullRequest
2 голосов
/ 24 июня 2019

Я наконец получил свой LINQ для запроса Datatable и с жестко закодированными значениями, я получил новый datatable с этими записями.Но мне нужна помощь, чтобы обновить этот код, чтобы использовать мой List returnClass () в качестве моих переменных в предложении where.

var query = from r in d.AsEnumerable()
            where r.Field<string>("Column7") == "672"
            select r;

DataTable output = query.CopyToDataTable<DataRow>();
foreach (DataRow row in output.Rows)
{
    output.ImportRow(row);
}

Я хотел бы заменить == "672" на мой список, который содержит 94значения, которые я хочу исключить из таблицы данных.Это мой оригинальный пост, который привел меня туда, где я сейчас нахожусь, но теперь мне просто нужна помощь с запросом LINQ, чтобы использовать мой список и писать так, чтобы исключить любые записи, значения которых находятся в моем списке.Я пытаюсь отфильтровать мои записи 34k до 29k, используя этот список.

Еще один пример того, что я пробовал, который не работает

            var query = from r in d.AsEnumerable()
                    where !r.Field<string>("Column7").Contains(Convert.ToString(returnClass()))
                    select r;

        DataTable output = query.CopyToDataTable<DataRow>();
        foreach (DataRow row in output.Rows)
        {
            output.ImportRow(row);
        }

Список выглядит так (усечено для ясности)

    private List<int> returnClass()
    {
        List<int> cl = new List<int>();
        cl.Add(75);
        cl.Add(76);
        cl.Add(77);
        cl.Add(78);
        cl.Add(79);
        cl.Add(80);
        cl.Add(81);
        cl.Add(82);
        return cl;
    }

1 Ответ

2 голосов
/ 24 июня 2019

Предполагая, что myList является List<string>, вы можете попробовать что-то вроде этого:

var query = from r in d.AsEnumerable()
            where myList.Any(r.Field<string>("Column7").Contains)
            select r;

Или, если myList - это List<int>, вы можете изменить столбец базы данных так, чтобы он также имел тип int, и вы можете сделать следующее:

var query = from r in d.AsEnumerable()
            where myList.Contains(r.Field<int>("Column7"))
            select r;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...