LINQ:… Where(x => x.Contains(以“foo”开头的字符串))
给定以下类的集合:
public class Post { ... public IList Tags { get; set; } }
是否有一种简单的方法可以使用LINQ获取包含以“foo”开头的标记的所有Post
?
var posts = new List { new Post { Tags = new[] { "fooTag", "tag" }}, new Post { Tags = new[] { "barTag", "anyTag" }}, new Post { Tags = new[] { "someTag", "fooBarTag" }} }; var postsWithFooTag = posts.Where(x => [some fancy LINQ query here]);
postsWithFooTag
现在应该包含posts
1和第3项。
使用字符串的StartsWith
var postsWithFooTag = posts.Where(x => x.Tags.Any(y => y.StartsWith("foo")));
x.Any
将检查是否有任何元素符合某些条件。 StartsWith
检查元素是否以某个字符串开头。
以上回复:
new Post { Tags = new[] { "fooTag", "tag" }}, new Post { Tags = new[] { "someTag", "fooBarTag" }}
为了使它insensitive
使用StringComparison.OrdinalIgnoreCase
。
var postsWithFooTag = posts.Where(x => x.Tags.Any(y => y.StartsWith("FoO", StringComparison.OrdinalIgnoreCase)));
返回:
new Post { Tags = new[] { "fooTag", "tag" }}, new Post { Tags = new[] { "someTag", "fooBarTag" }}
而StartsWith("FoO")
则不返回任何结果。
试试这个:
var postsWithFooTag = posts.Where(x => x.Tags.Any(y => y.StartsWith("foo")))
我相信这对你想要做的事情有用。
posts.Where(p => p.Tags.Any(t => t.StartsWith("foo")))
var tag = "foo"; var postsWithFooTag = posts.Where( p=> p.Tags.Any( t => t.StartsWith(tag)));
试试x => x.Tags.Any(tag => tag.StartsWith("foo"))
上述就是C#学习教程:LINQ:… Where(x => x.Contains(以“foo”开头的字符串))分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1029026.html