找不到查询模式的实现 - linq错误

时间:2013-06-08 18:28:08

标签: linq-to-sql asp.net-mvc-4 linq-to-entities

在我的MVC模型中遇到linq查询问题。我有一个由ObjectSet和EntityObject组成的edmx。这是我从 CanaClie0012 中的c获取错误的地方。当我去定义时,它会转到我的entityObject。

   public class ClientRepository
    {

        public List<ClientSearchResult> Search(ClientSearchFilter filter, string sortColumn, string sortOrder, int pageSize, int pageIndex, out int totalRecords)
        {

            var q = from c in CanaClie0012
                    select new ClientSearchResult
                    {
                        Client00130012 = c.Client00130012,
                        F1Pais00200012 = c.F1Pais00200012,
                        F1Cana02530012 = c.F1Cana02530012,
                        Direcc0012 = c.Direcc0012,
                    };

            if (!string.IsNullOrEmpty(filter.Client00130012))
            {
                q = q.Where(c => c.Client00130012.ToLower().Contains(filter.Client00130012.ToLower()));
            }
            if (!string.IsNullOrEmpty(filter.F1Pais00200012))
            {
                q = q.Where(c => c.F1Pais00200012.ToLower().Contains(filter.F1Pais00200012.ToLower()));
            }
            if (!string.IsNullOrEmpty(filter.F1Cana02530012))
            {
                q = q.Where(c => c.F1Cana02530012.ToLower().Contains(filter.F1Cana02530012.ToLower()));
            }
            if (!string.IsNullOrEmpty(filter.Direcc0012))
            {
                q = q.Where(c => c.F1Cana02530012.ToLower().Contains(filter.F1Cana02530012.ToLower()));
            }


            switch (sortColumn)
            {
                case "Client00130012":
                    q = (sortOrder == "desc") ? q.OrderByDescending(c => c.Client00130012) : q.OrderBy(c => c.Client00130012);
                    break;
                case "F1Pais00200012":
                    q = (sortOrder == "desc") ? q.OrderByDescending(c => c.F1Pais00200012) : q.OrderBy(c => c.F1Pais00200012);
                    break;
                case "Direcc0012":
                    q = (sortOrder == "desc") ? q.OrderByDescending(c => c.Direcc0012) : q.OrderBy(c => c.Direcc0012);
                    break;
                case "F1Cana02530012":
                    q = (sortOrder == "desc") ? q.OrderByDescending(c => c.F1Cana02530012) : q.OrderBy(c => c.F1Cana02530012);
                    break;
                default:
                    break;
            }
            totalRecords = q.Count();
            return q.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
        }


    }

我已尝试添加此内容:

List<CanaClie0012> clients = new List<CanaClie0012>();

但它返回的空值。请帮助我。我迷失了。

1 个答案:

答案 0 :(得分:0)

你的权利@Gert Arnold。这确实解决了我的问题..谢谢。

  MMProdatEntities clients = new MMProdatEntities();

            public List<ClientSearchResult> Search(ClientSearchFilter filter, string sortColumn, string sortOrder, int pageSize, int pageIndex, out int totalRecords)
            {

                var q = from c in clients.CanaClie0012
                        join d in clients.Clientes0013 on c.Client00130012 equals d.Client0013 
                        select new ClientSearchResult
                        {
                            Client00130012 = c.Client00130012,
                            F1Pais00200012 = c.F1Pais00200012,
                            F1Cana02530012 = c.F1Cana02530012,
                            Direcc0012 = c.Direcc0012,
                        };

                if (!string.IsNullOrEmpty(filter.Client00130012))
                {
                    q = q.Where(c => c.Client00130012.ToLower().Contains(filter.Client00130012.ToLower()));
                }
                if (!string.IsNullOrEmpty(filter.F1Pais00200012))
                {
                    q = q.Where(c => c.F1Pais00200012.ToLower().Contains(filter.F1Pais00200012.ToLower()));
                }
                if (!string.IsNullOrEmpty(filter.F1Cana02530012))
                {
                    q = q.Where(c => c.F1Cana02530012.ToLower().Contains(filter.F1Cana02530012.ToLower()));
                }
                if (!string.IsNullOrEmpty(filter.Direcc0012))
                {
                    q = q.Where(c => c.Direcc0012.ToLower().Contains(filter.Direcc0012.ToLower()));
                }


                switch (sortColumn)
                {
                    case "Client00130012":
                        q = (sortOrder == "desc") ? q.OrderByDescending(c => c.Client00130012) : q.OrderBy(c => c.Client00130012);
                        break;
                    case "F1Pais00200012":
                        q = (sortOrder == "desc") ? q.OrderByDescending(c => c.F1Pais00200012) : q.OrderBy(c => c.F1Pais00200012);
                        break;
                    case "F1Cana02530012":
                        q = (sortOrder == "desc") ? q.OrderByDescending(c => c.F1Cana02530012) : q.OrderBy(c => c.F1Cana02530012);
                        break;
                    case "Direcc0012":
                        q = (sortOrder == "desc") ? q.OrderByDescending(c => c.Direcc0012) : q.OrderBy(c => c.Direcc0012);
                        break;
                    default:
                        q = (sortOrder == "desc") ? q.OrderByDescending(c => c.Client00130012) : q.OrderBy(c => c.Client00130012);
                        break;
                }
                totalRecords = q.Count();

                return q.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
            }