【发布时间】:2021-06-01 21:12:32
【问题描述】:
我有以下代码,
public List<MemberDto> GetMembers(out int rowCount,int pageIndex,int pageSize, string seachColumn = "", string searchTerm = "", string sortBy = "", string sortDiection = "")
{
var members = (from m in context.Members
where (string.IsNullOrEmpty(searchTerm) || m.MemberNumber.Equals(searchTerm))
|| (string.IsNullOrEmpty(searchTerm) || m.LastName.Equals(searchTerm))
select m).AsEnumerable();
if (!string.IsNullOrEmpty(sortBy))
{
PropertyDescriptor prop = TypeDescriptor.GetProperties(typeof(EFModel.ClientData.Member)).Find(sortBy, true);
members = (sortDiection.ToLower() == "descnding") ? members.OrderByDescending(x => prop.GetValue(x)).ToList() : members.OrderBy(x => prop.GetValue(x)).ToList();
}
rowCount = (!string.IsNullOrEmpty(searchTerm)) ? members.Count() : rowCount = context.Members.Count() ;
members = members.Skip(pageIndex).Take(pageSize).ToList();
List<MemberDto> memberDtos = new List<MemberDto>();
mapper.Map(members, memberDtos);
return memberDtos;
}
在上面的代码中,我的seachColumn值可以是("a","b",or "")。当seachColumn = "a" 时,我需要根据searchTerm 值按列MemberNumber 搜索表数据
当seachColumn = "b" 时,我需要按LastName 列搜索表数据。基于searchTerm值
为了实现这一点,我编写了以下代码。
if(seachBy == "a")
{
var sa = (from m in context.Members
where (string.IsNullOrEmpty(searchTerm) || m.MemberNumber.Equals(searchTerm))
select m).AsEnumerable();
}
else if (seachBy == "b")
{
var sa = (from m in context.Members
where (string.IsNullOrEmpty(searchTerm) || m.LastName.Equals(searchTerm))
select m).AsEnumerable();
}
我知道,我试过的代码有点傻。有什么合适的方法吗?
【问题讨论】:
-
如果您要求进行一般性代码审查,这在 SO 中基本上是题外话(因为它可能非常主观并促进不同意见的讨论);您需要更加关注您的要求并具体化,并且应该促进基于事实的答案。请参阅don't-ask,因为它与改进主观问题有关。此外,codereview.stackexchange.com 的一般代码审查是主题
标签: c# entity-framework linq