编程语言
首页 > 编程语言> > c#-动态定义需要标识其值的键名

c#-动态定义需要标识其值的键名

作者:互联网

我有一个键值对列出这样的东西

 List<Subscriptions> subs = new List<Subscriptions>();
subs.Add(new Subscriptions() { Id = 1, Name = "ABC" });
            subs.Add(new Subscriptions() { Id = 1, Name = "DEF" });

我可以针对一个键(ID或名称)进行搜索,但我要实现的是该用户定义他们要针对ID或名称搜索的键

现在我正在使用这种方法基于名称值过滤列表

 var filtered = subs.Where(sub => sub.Name.IndexOf(SearchString.Text,StringComparison.OrdinalIgnoreCase) >=0);

sub.Name是在此处静态定义的,我希望用户选择他们希望其搜索基于的内容

例如,如果我们有abc:Name程序在名称键下搜索abc,并且如果我们有1:Id,则它将在ID中搜索1.
这只是一个示例,在实际情况下,我可以在列表中包含多个字段.
我希望我能说清楚.

解决方法:

为什么不通过简单的if或switch应用Where

// keyword : abc:Name or  1:Id
var value = keyword.Split(':')[0];
var key = keyword.Split(':')[1];

if(key == "Name")
{
    var filterred = subs.Where(sub => sub.Name == value);
}
else if(key == "Id")
    var filterred = subs.Where(sub => sub.id == int.Parse(value));
}

标签:list,keyvaluepair,c
来源: https://codeday.me/bug/20191024/1924259.html