在我的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>();
但它返回的空值。请帮助我。我迷失了。
答案 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();
}