林克的代表
本文关键字:林克 | 更新日期: 2023-09-27 18:32:09
>我有一个包含搜索词、点击等的实体列表。
用户应该能够比较实体之间的点击量 - 即在搜索开始时包含"免费样本"一词的所有实体,并与短语末尾包含短语"逮捕我"的所有实体进行比较。
我可以使用多个 foreach 和 switch 来做到这一点(因为用户选择查询和字符串的一部分),但我知道通过使用 Linq,我可以使用"开头为"和"结尾为"函数。你能指导我吗?
听起来你想要一个以"免费样品"开头的东西列表,然后是另一个以"逮捕我"结尾的东西。 假设这就是你想要的,你会做这样的事情。
// Assumes myStuff is where all of your data is right now
var startsWith = myStuff.Where(x => x.MyString.StartsWith("free sample"));
var endsWith = myStuff.Where(x => x.MyString.EndsWith("arrest me"));
// Now you can do whatever comparisons between the two lists you need
当然,如果您只想要所有这些以"免费样品"开头并以"逮捕我"结尾,您可以这样做
var hasBoth = myStuff.Where(x => x.MyString.StartsWith("free sample") && x.MyString.EndsWith("arrest me"))
LINQ Where()
返回一组满足条件的实体:
var filtered = entities.Where(e =>
e.SearchPattern.StartsWith("Start")
&&
e.SearchPattern.EndsWith("End"));
LINQ Single()/SingleorDefault()
返回满足条件的单个实体,如果找到多个实体,则会引发异常。
var filtered = entities.Single(e =>
e.SearchPattern.StartsWith("Start")
&&
e.SearchPattern.EndsWith("End"));
LINQ First()
/Last()
返回给定条件的第一个/最后一个实体...
var filtered = entities.First(e =>
e.SearchPattern.StartsWith("Start")
&&
e.SearchPattern.EndsWith("End"));
有关完整列表,请参阅可枚举类方法
你提到的函数只是字符串函数。 s.StartsWith("abc")
和s.EndsWith("xyz")
.在 LINQ 查询中,可以在 where 子句中使用它们。
var startIndexes = phrases
.Where(p => p.StartsWith("free sample")
.Select((p, i) => i);
var endIndexes = phrases
.Where(p => p.EndsWith("arrest me")
.Select((p, i) => i);
这两个查询返回分别以某个字符串结尾的短语的索引。我使用接受索引作为第二个参数的选择重载。