0

我正在尝试使用 LinqToExcel 库从 Excel 工作表中提取不同的值。

我不断收到错误

"{"查询表达式'(MOD)'中的语法错误(缺少运算符)。"}"

我已经尝试了所有方法,但似乎无法从该列中提取不同的值。

任何帮助将不胜感激。

提前致谢,

代码如下。

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();

    }
4

1 回答 1

0

我将不得不对发生此错误的原因进行更多研究,但一个快速的解决方法是在执行 Distinct() 操作之前将查询转换为列表。

这是一个代码示例

IEnumerable<String> ProcCodeModifiers = (from row in excel.Worksheet<WorksheetRow>(FirstWorksheet)
                                         where row.MOD != null
                                         select row.MOD).ToList().Distinct();
于 2013-03-29T14:18:13.053 回答