C# 使用lambda表达式将匹配词添加到列表中
如何使用单行代码将所有必需的单词添加到列表中?我想使用lambda表达式,但不知道如何使用它?也欢迎其他解决办法。在Net2.0上,Lambda是可用的,但LINQ不是。那么有可能避免LINQ dll添加吗C# 使用lambda表达式将匹配词添加到列表中,c#,lambda,.net-2.0,C#,Lambda,.net 2.0,如何使用单行代码将所有必需的单词添加到列表中?我想使用lambda表达式,但不知道如何使用它?也欢迎其他解决办法。在Net2.0上,Lambda是可用的,但LINQ不是。那么有可能避免LINQ dll添加吗 List<string> lstStr = new List<string>(); string[] objStr = new string[] { "Software", "Development", "department", "store", "Marketin
List<string> lstStr = new List<string>();
string[] objStr = new string[] { "Software", "Development", "department", "store", "Marketing" };
foreach (string objLcl in objStr)
{
if (objLcl.Contains("o"))
{
lstStr.Add(objLcl);
}
}
如果要添加包含o的所有字符串:
这应该对你有用。假设您希望有包含o且不等于o的条目。如果不是,则必须将Contains更改为Equals并获得预期结果
string[] objStr = new string[] { "Software", "Development", "department", "store", "Marketing" };
var lstStr = objStr.Where(x => x.Contains("o")).ToList();
查看以获取更多信息。您可以使用LINQ Where方法,如
lstStr = objstr.Where(s => s.Contains("o")).ToList();
根据注释,如果您想在区分大小写的搜索中进行搜索,则必须使用indexOf方法,在该方法中,您可以传递StringComparison枚举值,因为Contains没有可以获取StringComparison枚举值的重载
lstStr = objstr.Where(s => s.IndexOf("o", StringComparison.OrdinalIgnoreCase) >= 0)
.ToList();
同样,如果您想使用LINQ,那么可以使用普通的foreach循环控制,如
foreach(var s in objstr)
{
if(s.IndexOf("o", StringComparison.OrdinalIgnoreCase) >= 0)
lstStr.Add(s);
}
下面是Linq
string[] objStr = new string[] { "Software", "Development", "department", "store", "Marketing" };
List<string> lstStr = objStr.Where(objLcl => objLcl.Contains("o")).ToList();
为了避免额外的内存分配,可以从源集合中删除项no LINQ:
var lstStr = new List<string> { "Software", "Development", "department", "store", "Marketing" };
lstStr.RemoveAll(s => !s.Contains("o"));
现在,随着更多的研发,我找到了一个解决方案,而且非常简单
lstStr.AddRange(Array.FindAll(objStr, x => x.Contains("o")));
您的示例将返回一个空集合。这就是你的意思吗?还是你的意思?结果应该是什么样的?目前它返回一个空集合,但我想你想要所有包含字符o的单词,不是吗?为什么你这么在乎一行?您应该首先确保代码按照预期工作,并且被很好地理解。然后看一些Linq教程。哦,实际上我做了一些研发,忘记了更改代码。如果你不能使用Linq,不要将Linq作为标记。似乎有点违反直觉。@不幸的是,这主要是因为发布的数组值存在拼写错误,而这些数组值现在不会做任何事情added@J.Steen,是的,但这是per OP发布的代码,其中数组值的大小写为小写如果我不想使用LINQ,那么?当在NET 2.0上瞄准时,lambda是可用的,但LINQ不是。那么有没有可能避免LINQ的加入呢?有时候我会有这样的感觉,我后面跟着一些寻求报复的人。拉胡尔的回答也是一样,后来得到了支持。真正地strange@J.Steen为什么呢?即使是作为其工作示例的代码OP也不会这样做?你想说OP错误地认为他的代码是有效的吗-^^@Steen好的,考虑到他的问题,你可能是对的:-当瞄准Net2.0时,Lambda是可用的,但LINQ不是。那么,有可能避免LINQ dll添加吗?当在NET2.0上定位时,lambda是可用的,但LINQ不是。所以,是否有可能避免LINQ dll add?但您直接将值添加到列表…?@cSharma或使用列表而不是数组。我从数据库中获取数据,其中需要按某些特定的字对行进行分类并存储在不同的表中。所以我想用更少的编码来实现这一点。
lstStr.AddRange(Array.FindAll(objStr, x => x.Contains("o")));