C#Linq动态项属性
试图使一个可重用函数跳过所有相同的代码。问题是我匹配的地方的键有不同的名称。否则一切都一样 这就是我目前所拥有的。问题在于:item.ITEMGROUP,这取决于运行此函数的内容C#Linq动态项属性,c#,linq,dynamic,C#,Linq,Dynamic,试图使一个可重用函数跳过所有相同的代码。问题是我匹配的地方的键有不同的名称。否则一切都一样 这就是我目前所拥有的。问题在于:item.ITEMGROUP,这取决于运行此函数的内容 public List<T> FilterGroupIds<T>(List<T> list, string key, string groupids) { if (!string.IsNullOrEmpty(groupids)) { string[]
public List<T> FilterGroupIds<T>(List<T> list, string key, string groupids)
{
if (!string.IsNullOrEmpty(groupids))
{
string[] groupidList = groupids.Split(new char[] { ',' });
List<T> grouped = new List<T>();
foreach (string groupidListItem in groupidList)
{
var mylist = list
.Where(item => **item.ITEMGROUP**.Contains(groupidListItem))
.ToList();
grouped.AddRange(mylist);
}
list = grouped;
}
return list;
}
我只需通过一个委托传递此部分
item=>item[key].Contains(groupidListItem)
:
public List<T> FilterGroupIds<T>(List<T> list, string key, string groupids,
Func<T,bool> condition)
{
...
var mylist = list.Where(condition).ToList();
}
与
foreach (string groupidListItem in groupidList)
{
var mylist = list
.Where(item => **item.ITEMGROUP**.Contains(groupidListItem))
.ToList();
grouped.AddRange(mylist);
}
list = grouped;
return list;
您不能对键名称完全相同的通用接口的
t
进行约束吗?我不太了解如何使用函数filterGroupId(列表、字符串键、字符串GroupId、Func条件)。如何编写委托函数。你能给我举个例子吗?@roadyFunc myFilter=item=>item.Group.Contains(groupIdListItem)例如,代码>将是有效的。在函数的位置
中放入的任何内容,都可以将其放入Func
并传递给函数。如果你能在你的问题中包括你的一个类,我可以给出一个更好的例子。没有从家连接到数据库,但没有编译错误string[]groupidList=groupids.Split(新字符[]{',});list=list.Where(item=>groupidList.Any(g=>item.ITEMGROUPID.Contains(g)).ToList()代码>
return list.Where(item => groupIdList.Any(g => item.ITEMGROUP.Contains(g))
.ToList();
foreach (string groupidListItem in groupidList)
{
var mylist = list
.Where(item => **item.ITEMGROUP**.Contains(groupidListItem))
.ToList();
grouped.AddRange(mylist);
}
list = grouped;
return list;