EPPlus в .NETCore дает разные результаты для одного и того же кода - PullRequest
2 голосов
/ 26 марта 2019

У меня есть код, который я скопировал и вставил непосредственно между консольным приложением, встроенным в .NETFramework 4.7.1 и .NETCore 2.2, и я получаю совершенно разные результаты при выполнении.Сначала я использовал Intersect, но когда начал получать разные результаты.Вот код:

var data = ReadDataFromSpreadSheet();

using (var source = new SqlConnection("myconnection"))
{
    source.Open();
    var queryData = source.Query<Model>(SelectSQL).ToList();
    var results = new List<string>();
    foreach (var accountId in data)
    {
        var a = queryData.SingleOrDefault(x =>
            x.AccountNumber == accountId);
        if (a != null)
            results.Add(accountId);
        else
        {
            Debug.WriteLine("WTF!");
        }
    }
    var intersect = data.Intersect(queryData.Select(x => x.AccountNumber)).ToList();
    results = results.OrderBy(x => x).ToList();
    Console.WriteLine("Results = " + results.Count);
    Console.WriteLine("Instersect = " + results.Count);
    Console.ReadLine();
}

Результаты в .NETFramework составляют около 1750 строк, которые находятся в данных электронной таблицы, а НЕ в данных модели.Версия .NETCore составляет около 730 строк.Обратите внимание, что цикл ИЛИ Intersect дает одинаковые значения, поэтому я думаю, что проблема в методе Equals?

1 Ответ

2 голосов
/ 26 марта 2019

UGH!@JonSkeet и @joesewel спасибо, что ответили.Оказывается, что версия ядра .net Epplus изменила индекс рабочего листа с 1 на 0, поэтому полная 100% копия кода не работала одинаково между .NETCore и Framework.<>

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