我创建了一个通用存储库,该存储库将从实体中获取数据,而与实体无关。
在一种方法中,我想在传递List<string>
值的地方检索数据,以检查其是否存在于一列中。如果我传递单个值,我的代码可以正常工作。
关于如何通过List<string>
代替INSTITUTIONID
的任何想法吗?
通话:
List<REQUESTDASHBOARD> listDashboard = new List<REQUESTDASHBOARD>();
listDashboard = dashboardSericeManager.GetList(
d => d.INSTITUTIONID != null &&
d.INSTITUTIONID.Contains("4cb6d23635"), null).ToList();
实施:
public IEnumerable<T> GetList(Expression<Func<T, bool>> predicate, params string[] navigationProperties)
{
IEnumerable<T> list;
var query = DbSet.AsQueryable();
if (navigationProperties != null && navigationProperties.Length > 0)
{
foreach (string navigationProperty in navigationProperties)
{
query = query.Include(navigationProperty);
}
}
list = query.Where(predicate).ToList<T>();
return list;
}
答案 0 :(得分:0)
假设您正在定义一个List<string>
集合,如下所示:
var institutionList = new List<string>();
// add data into list
institutionList.Add("institutionID_1");
institutionList.Add("institutionID_2"); // etc
和INSTITUTIONID
是数据模型类中的字符串属性,那么您可以一起使用Any()
和Contains()
扩展方法来找出INSTITUTIONID
,它在上面的列表中可用,类似于SQL中的WHERE ... IN ...
查询:
List<REQUESTDASHBOARD> listDashboard = new List<REQUESTDASHBOARD>();
listDashboard = dashboardSericeManager.GetList(d => d.INSTITUTIONID != null
&& institutionList.Any(x => d.INSTITUTIONID.Contains(x)), null).ToList();