DataTable - Выбрать только строку поиска, где значение меньше 10? - PullRequest
0 голосов
/ 07 июня 2011

Мне очень трудно понять, что происходит с методом Select в DataTable. Вот данные, которые я получил в DataTable, под названием VotePeriods:

PeriodID Description

11 Test 11

10 Test 10

9 Test 9

...

...

1 Test1

Вот код для выбора периода на основе PeriodID:

if (VotePeriods.Rows.Count > 0)
{
    DataRow[] vp = VotePeriods.Select("PeriodID = " + voteperiod);

    if (vp.Length > 0)
    {
        return vp[0];
    }
}

По какой-то причине, если voteperiod равно 9 или меньше, то у меня выбрана правильная строка. Но если я передаю 10 или 11, у меня нет данных обратно, хотя в моем DataTable существуют PeriodID 10 и 11. Любое предложение?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 07 июня 2011

Надеюсь ниже будет работать. Не забывайте всегда добавлять одинарные кавычки для значений при использовании метода select с DataTable.

if (VotePeriods.Rows.Count > 0)
{
    DataRow[] vp = VotePeriods.Select("PeriodID = '" + voteperiod +"'");

    if (vp.Length > 0)
    {
        return vp[0];
    }
}
0 голосов
/ 07 июня 2011

Убедитесь, что тип данных вашего столбца PeriodID является числовым, например int:

VotePeriods.Columns.Add("PeriodID", typeof(int));
0 голосов
/ 07 июня 2011

Вы пытались использовать LINQ для выбора?Мне не повезло с DataTable.Select раньше.

if(VotePeriods.Rows.Count > 0)
{

      var vp = from x in VotePeriods.AsEnumerable()
               where x["PeriodID"] == voteperiod
               select x;

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