本文介绍了过滤列表< 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
发布评论