Получить значения из ошибки данных Объект не соответствует типу цели - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь получить все значения из всех строк данных в указанном столбце c, где другой столбец имеет значение x;
Я изо всех сил пытаюсь заставить его работать. Я перепробовал много вариантов, но всегда получаю ошибку: объект не соответствует типу цели. Это соответствующий код, который я использую:

 var toCompaireList = new List<string>();
            try
            {
                PropertyInfo property = type.GetProperty(collNames[i]);
                EnumerableRowCollection<string> dValue = from row in dataTableTemp.AsEnumerable()
                                                         where row.Field<int>(columnNames[i]) >= ((int)property.GetValue(type)) - minPrecision &&
                                                               row.Field<int>(columnNames[i]) <= ((int)property.GetValue(type)) + plusPrecision
                                                         select row.Field<string>(opdr);

                if (dValue != null && dValue.ToList().Count > 0)
                {
                    toCompaireList = dValue.ToList();
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }

Вот резюме Stacktrace:

в StatisticMethods. <> C__DisplayClass3_2.b__2 (строка DataRow) в C: \ Users \ Program \ StatisticMethods.cs: строка 215 в System.Linq.Enumerable.WhereEnumerableIterator 1.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator 2.MoveNext () в System.Collections.Generi c .List 1..ctor(IEnumerable 1 коллекция) в System.Linq.Enumerable. ToList [TSource] (источник IEnumerable`1) в Program.StatisticMethods.d__3.MoveNext () в C: \ Users \ Program \ StatisticMethods.cs: строка 219

Понятия не имею, что или где несоответствие типов.
Надеюсь, кто-то может помочь,

Groover

1 Ответ

0 голосов
/ 29 марта 2020

Если вы пытаетесь получить значение в одном столбце из всех строк, представленных в dataTable. Тогда этого запроса должно быть достаточно.

var retrieved =dataTableTemp.Rows.OfType<DataRow>()
                             .Where(row => (int.Parse(row[x].Tostring()) >=y && (int.Parse(row[x].Tostring()) <= z)
                             .Select(row[requiredColumnName]);

Значения в перечислении retrieved имеют тип object. так что вы можете привести к указанному типу c.

var mainResult= retrieved.cast<TypeName>().ToList();

Если у вас возникли проблемы с использованием этого, пожалуйста, оставьте комментарий.

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