很抱歉,如果已经回答了这个问题 - 我已经阅读了至少20个回答几乎相同问题的问题,但他们的情况略有不同,或者我无法让他们工作。
尽管事实上我想要的更简单! :(
我想做的就是返回以“ABC”开头的字符串数组的所有元素。
所以{“ABC_1”,“ABC_2”,“ABC_3”,“123_1”,“ABC_4”}
将返回{“ABC_1”,“ABC_2”,“ABC_3”,“ABC_4”}
将Linq与Lambda表达式一起使用:
所以逻辑类似于以下内容:
FilteredArray = StringArray.Where(String.StartsWith("ABC"));
每当我尝试类似于上面的内容时,它都不会返回任何值。
感谢您提前获得的帮助和道歉,因为无法独立解决此问题。
P.S如果您知道一个链接,可以为我提供Linq与Lambda表达式的良好教程,我将不胜感激。
答案 0 :(得分:4)
如果要从数组中创建数组,则需要使用ToArray
。您还需要正确使用LINQ语法:
// This assumes that FilteredArray is declared as String[]
FilteredArray = StringArray.Where(str => str.StartsWith("ABC")).ToArray();
请注意,Where
不是全部大写,因为C#中的标识符区分大小写。另请注意在Where
方法中使用lambda语法。
答案 1 :(得分:2)
您需要在lambda表达式中使用正确的语法,如此
var FilteredArray = StringArray.Where(x => x.StartsWith("ABC")).ToArray();
如果您想了解Linq表达式,那么这里有一个非常好的解决方案101 Linq Samples
答案 2 :(得分:2)
我真的不确定原始示例会编译吗?你错过了lambda语法。这将正常工作。基本上你需要为where子句(数组中的每个字符串)指定输入参数,这是x。然后你就开始检查字符串了。
var filtered = StringArray.Where(x => x.StartsWith("ABC"));