过滤列表< string>使用linq [英] Filter list<string> using linq
本文介绍了过滤列表< string>使用linq的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想根据下面给出的条件筛选字符串列表,
Hi,
I want to filter string list based on some condition as given below,
List<string> config = new List<string>();
config.Add("userdata.member1");
config.Add("userdata.member2");
config.Add("userdata.member3");
config.Add("userdata.member4");
config.Add("userdata.member5");
config.Add("attribute.memberattribute1");
config.Add("attribute.memberattribute2");
config.Add("attribute.memberattribute3");
config.Add("attribute.memberattribute4");
config.Add("attribute.memberattribute5");
string[] userDataKeys = config.Select(x => x.Contains("userdata.")?x.Replace("userdata.",""):x).ToArray();
我的尝试:
我想检查字符串是否有userdata。并用空字符串替换它最后只返回被替换的项目。
预期输出:
member1
member2
会员3
会员4
会员5
谁能告诉我如何实现它使用linq。
谢谢。
What I have tried:
I want to check whether the string has "userdata." and replace it with empty string finally return the replaced items only.
Expected output:
member1
member2
member3
member4
member5
can anyone tell me how to achieve it using linq.
Thanks.
推荐答案
你几乎就在那里。首先,您需要确定哪些记录包含 userdata。
。 where子句有助于:
You're almost there. First you need to identify which records contain userdata.
. A where clause helps here:
config.Where(x => x.StartsWith("userdata.")).Select(x => x.Replace("userdata.", string.Empty)).ToList();
试试
try
string[] userDataKeys = config.Where(x => x.Contains("userdata.")).Select(x => x.Replace("userdata.", "") ).ToArray();
无需使用.StartWith
或.Contains
方法。简单的.Replace
应该足够了:)
There's no need to use.StartWith
or.Contains
method. Simple.Replace
should be enough :)
var result = config.Select(x=>x.Replace("userdata.", string.Empty)).ToList();
当然,如果您只想返回成员
字的数据,您可以使用:
Of course, if you want to return only data with member
word, you can use:
var result = config.Where(x=>x.Contains("member")).Select(x=>x.Replace("userdata.", string.Empty)).ToList();
这篇关于过滤列表< string>使用linq的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文