Просто нужно вернуть разные значения из Excel с помощью EPPlus

Все,

Пытаюсь понять это уже день. Много гуглил! У меня есть excel, где у меня есть 5 столбцов, но в первом столбце у меня есть номера продуктов. Я хочу вернуть номера продуктов DISTINCT из Excel. Использование EPPlus для чтения в Excel. Вот мой код:

string fileName = file.FileName;
                    string fileContentType = file.ContentType;
                    byte[] fileBytes = new byte[file.ContentLength];
                    var data = file.InputStream.Read(fileBytes, 0, Convert.ToInt32(file.ContentLength));

                    if (file.FileName.IndexOf(".xlsx") == 0)
                    {
                        throw new Exception("Please ensure that the file has been converted to latest excel version. The file type must be .xlsx.");
                    }

                    using (var package = new ExcelPackage(file.InputStream))
                    {
                        var currentSheet = package.Workbook.Worksheets;
                        var workSheet = currentSheet.FirstOrDefault();
                        var noOfCol = workSheet.Dimension.End.Column;
                        var noOfRow = workSheet.Dimension.End.Row;
                        //lets remove all records 

                        //get a list of distinct item numbers and remove all records in preparation for upload 
                        //I need help with this statement! 

                        var result = workSheet.Cells.Select(grp => grp.First()).Distinct().ToList();

person Be05x5    schedule 20.07.2018    source источник
comment
Этот оператор возвращает разные записи, но все они разные, потому что он не ищет номер продукта в первом столбце: var result = workSheet.Cells.Select(grp => grp.First()).Distinct().ToList();   -  person Be05x5    schedule 20.07.2018


Ответы (1)


Так что я смог понять это путем отладки. Это не кажется самым эффективным ответом, но вот оно:

var result = workSheet.Cells.Where(s => s.Address.Contains("A")).Where(v => v.Value != null).Where(vb => vb.Value.ToString() != "").GroupBy(g => g.Value.ToString()).Distinct().ToList(); 

Таким образом, в основном возвращайте только столбец A (первый столбец, так как адрес содержит эту информацию), затем удаляйте нули и пробелы, следующую группу по значению и, наконец, возвращайте отдельный столбец в виде списка.

person Be05x5    schedule 20.07.2018