子表上的LINQ排序转换为CSV

时间:2014-02-07 12:59:21

标签: linq linq-to-sql

我有一个EF模型(为了清楚起见,注意加入了部分类)

public class Product
{
    public System.Guid ProductID { get; set; }
    public string Product{ get; set; }
    public virtual ICollection<Module> Modules { get; set; }
    [NotMapped]
    public string ModulesCSV
    {
        get
        {
            string retList = "";
            foreach (Module aModule in Modules)
            {
                if (retList.Length > 0)
                    retList += ", ";
                retList += aModule.Module.Trim ();
            }
            return retList;
        }
    }
 }

现在我需要对CSV以及其他列进行排序,我发现链接到sql存在问题。我的正常排序不能这样做我想知道是否有人知道一个很好的方法来做它LINQ并可以分享它吗?

当前的排序行是排序&#39;是列名称和&#39; sortdir&#39;是&#34; ASC&#34;或者&#34; DESC&#34;这适用于其他列。     query = db.Products.AsExpandable()。Where(谓词).OrderBy(sort +&#34;&#34; + sortdir);

1 个答案:

答案 0 :(得分:0)

不漂亮或效率不高  if(sort!=“CSV”)//因为非ddb列必须在列表上排序                 query = db.Products.AsExpandable()。Where(谓词).OrderBy(sort +“”+ sortdir);             其他             {                 query = db.Products.AsExpandable()。Where(谓词);

            if (sortdir=="ASC")
            {
                query = db.Products.AsExpandable().Where(predicate).ToList<Product>().AsQueryable <Product> ();
                query = query.OrderBy(r => r.GetType().GetProperty(sort).GetValue(r, null));
            }
            else
            {
                query = db.Products.AsExpandable().Where(predicate).ToList<Product>().AsQueryable <Product> ();
                query = query.OrderByDescending(r => r.GetType().GetProperty(sort).GetValue(r, null));
            }
        }