Linq 字符串列表匹配任何内部字符串
Linq list of string match any inside string
好的,给定数组:
string[] keywordlist = new string[] { "match", "found" };
这 return 是错误 "The data types text and text are incompatible in the equal to operator":
List<StaticPage> matches = cdc.StaticPages.Where(x=>keywordlist.Contains(x.BodyCopy)).ToList();
虽然有几行应该满足条件,但这并没有给出错误,但是 returns 0 结果,我不明白为什么我需要发送 table到列表(至少以前从来不需要这样做):
List<StaticPage> matches = cdc.StaticPages.ToList().Where(x=>keywordlist.Contains(x.BodyCopy)).ToList();
怎么了?我只想 return 中的任何行 --> 数组中的任何 <-- 单词都在 "BodyCopy" 字段中找到。
你的线路
List<StaticPage> matches = cdc.StaticPages.Where(x=>keywordlist.Contains(x.BodyCopy)).ToList();
表示您正在查找具有 BodyCopy
等于其中一个关键字的页面。相反,您需要以下行:
var matches = cdc.StaticPages.Where(
x => keywordlist.Any(keyword => x.BodyCopy.Contains(keyword))
).ToList();
这意味着您正在查看其内容中包含关键字之一的页面。
完整片段:
class StaticPage
{
public string BodyCopy;
}
static void Main()
{
string[] keywordlist = { "match", "found" };
var cdc = new
{
StaticPages = new List<StaticPage>
{
new StaticPage {BodyCopy = "text match text"},
new StaticPage {BodyCopy = "text text"},
new StaticPage {BodyCopy = "text found text"}
}
};
var matches = cdc.StaticPages.Where(
x => keywordlist.Any(keyword => x.BodyCopy.Contains(keyword))
).ToList();
foreach (var staticPage in matches)
Console.WriteLine(staticPage.BodyCopy);
}
输出:
text match text
text found text
好的,给定数组:
string[] keywordlist = new string[] { "match", "found" };
这 return 是错误 "The data types text and text are incompatible in the equal to operator":
List<StaticPage> matches = cdc.StaticPages.Where(x=>keywordlist.Contains(x.BodyCopy)).ToList();
虽然有几行应该满足条件,但这并没有给出错误,但是 returns 0 结果,我不明白为什么我需要发送 table到列表(至少以前从来不需要这样做):
List<StaticPage> matches = cdc.StaticPages.ToList().Where(x=>keywordlist.Contains(x.BodyCopy)).ToList();
怎么了?我只想 return 中的任何行 --> 数组中的任何 <-- 单词都在 "BodyCopy" 字段中找到。
你的线路
List<StaticPage> matches = cdc.StaticPages.Where(x=>keywordlist.Contains(x.BodyCopy)).ToList();
表示您正在查找具有 BodyCopy
等于其中一个关键字的页面。相反,您需要以下行:
var matches = cdc.StaticPages.Where(
x => keywordlist.Any(keyword => x.BodyCopy.Contains(keyword))
).ToList();
这意味着您正在查看其内容中包含关键字之一的页面。
完整片段:
class StaticPage
{
public string BodyCopy;
}
static void Main()
{
string[] keywordlist = { "match", "found" };
var cdc = new
{
StaticPages = new List<StaticPage>
{
new StaticPage {BodyCopy = "text match text"},
new StaticPage {BodyCopy = "text text"},
new StaticPage {BodyCopy = "text found text"}
}
};
var matches = cdc.StaticPages.Where(
x => keywordlist.Any(keyword => x.BodyCopy.Contains(keyword))
).ToList();
foreach (var staticPage in matches)
Console.WriteLine(staticPage.BodyCopy);
}
输出:
text match text
text found text