LinqToExcel使用DISTINCT关键字时出错

时间:2013-03-29 13:13:49

标签: c# asp.net-mvc linq-to-excel

我正在尝试使用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();

    }

1 个答案:

答案 0 :(得分:0)

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

这是一个代码示例

IEnumerable<String> ProcCodeModifiers = (from row in excel.Worksheet<WorksheetRow>(FirstWorksheet)
                                         where row.MOD != null
                                         select row.MOD).ToList().Distinct();