2

试图学习 Linq 但在这里碰壁。

我试图查找所有包含多个字符串的文章,但不确定在传递列表时如何使用 .Contains。

private void SearchArticles()
{
    AdminEntities db = new AdminEntities();

    var searchStrs = new List<string> {"search_string1", "search_string2"};
    var artListfull = db.view_M02Articles_SearchPublished(0, "").ToList();
    var artList = artListfull.FindAll(n => n.Bodytext.Contains(searchStrs));

    Label1.Text = artList.Count.ToString();
    Repeater1.DataSource = artList;
    Repeater1.DataBind();
}

这里的正确语法是什么?

4

3 回答 3

5

[编辑]假设那BodyText是类型string

你可以试试这个:

//the article body must contain "ALL" the search terms
var artList = artListfull.Where(art => searchStrs.All(art.BodyText.Contains));

或者

//the article body must contain "At least one" of the search terms
var artList = artListfull.Where(art => searchStrs.Any(art.BodyText.Contains));

[编辑 2]替换str => art.BodyText.Contains(str)art.BodyText.Contains

于 2013-04-25T12:08:56.573 回答
2

使用 LINQ

var artList= (from art in artFullList
              from search in searchStrs 
              where art.Bodytext.Contains(search)
              select art).ToList();
于 2013-04-25T12:14:54.350 回答
1
var artList = artListfull.Where(a => searchStrs.Any(s => a.Bodytext.Contains(s)))
                         .ToList();
于 2013-04-25T12:10:25.060 回答