I am trying to pull distinct values from an Excel Worksheet using the LinqToExcel library.
I keep getting an error
"{"Syntax error (missing operator) in query expression '(MOD)'."}"
I have tried everything and can't seem to pull the distinct values from this column.
Any assistance would be greatly appreciated.
Thanks in Advance,
Code is as follows.
public class WorksheetRow
{
public String CPT { get; set; }
public String MOD { get; set; }
public String DESCRIPTION { get; set; }
public double FEE { get; set; }
}
public class FileUtilsController : Controller
{
//
// GET: /FileUtils/
public ActionResult Index()
{
return View();
}
public ActionResult FileUpload()
{
return View();
}
// This action handles the form POST and the upload
[HttpPost]
public ActionResult FileUpload(HttpPostedFileBase file)
{
// Verify that the user selected a file
if (file != null && file.ContentLength > 0)
{
// extract only the fielname
var fileName = Path.GetFileName(file.FileName);
// store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
var excel = new ExcelQueryFactory(path);
List<String> worksheetNames = excel.GetWorksheetNames().ToList();
String FirstWorksheet = worksheetNames[0];
//Query Column Names
//The GetColumnNames() method can be used to retrieve the list of column names in a worksheet.
IEnumerable<String> ProcCodeModifiers = (from row in excel.Worksheet<WorksheetRow>(FirstWorksheet)
where row.MOD != null
select row.MOD).Distinct();
ViewData["Modifiers"] = "";
foreach (String item in ProcCodeModifiers)
{
ViewData["Modifiers"] += item + ", ";
}
// redirect back to the index action to show the form once again
// return RedirectToAction("Index", "Home");
}
return View();
}
I'll have to do more research into why this error is happening, but a quick workaround is to convert the query to a list before performing the Distinct() operation.
Here's a code example
IEnumerable<String> ProcCodeModifiers = (from row in excel.Worksheet<WorksheetRow>(FirstWorksheet)
where row.MOD != null
select row.MOD).ToList().Distinct();