2014-03-07 83 views
-2

我试图创建一个字符串列表(在用作JSON的控制器方法,被客户端上的JQuery自动完成所使用)。有没有办法将这六条或七条线减少到两条线?换句话说,我希望第一行创建IEnumerable字符串。最好的Linq语法为JQuery创建列表自动完成

还有一种不使用自定义比较器的方法 - 它只是比较字符串(在CompanyMeasureName字段上)。

public JsonResult GetMyMeasureNameList(string term) 
{ 
    //I've defined a custom comparer called NameComparer on the MyMeasure Object 
    IEnumerable<MyMeasure> interList = 
     MyMeasure.Distinct(new MyMeasure.NameComparer()) 
       .Where(cmo => cmo.CompanyMeasureName 
            .ToLower() 
            .Contains(term.ToLower())); 

    List<string> retList = new List<string>(); 
    foreach (var cmo in interList.ToList()) 
    { 
      CompanyMeasure c = (CompanyMeasure)cmo; 
      retList.Add(c.CompanyMeasureName); 
    } 

    return Json(retList, JsonRequestBehavior.AllowGet); 
}   

在此先感谢

回答

-1

下解决了问题的一部分(像往常一样,我想出了答案5秒发布问题后)。不过,我仍然希望能够不使用自定义比较器,因为它看起来毫无意义。

IEnumerable<MyMeasure> interList = 
    MyMeasure.Distinct(new MyMeasure.NameComparer()) 
      .Where(cmo => cmo.CompanyMeasureName 
           .ToLower() 
           .Contains(term.ToLower())).Select(m => m.CompanyMeasure);