“在哪里”用linq到sql

时间:2009-06-06 23:49:07

标签: linq

我试图在文本框中输入关键字时向用户提供数据库表中的项目列表。我目前的问题是用户可以输入几个关键字,我希望能够只对数据库执行一次往返,并获得几个关键字的结果匹配(OR操作)。有没有办法执行这样的任务而不必为每个关键字命中数据库?

5 个答案:

答案 0 :(得分:5)

包含()是你的朋友。

List<string> keywords = new List<string>();
keywords.Add("foo");
keywords.Add("bar");

var results = from item in db.Table
              where keywords.Contains(item.Description)
              select item;

...给你

WHERE [t0].[Description] IN (@p0, @p1)

答案 1 :(得分:1)

我发现post为我想要实现的目标提供了一个很好的解决方案。谢谢你的帮助!

答案 2 :(得分:0)

我发现this page在尝试找出C#中的LINQ内容时非常有用。它建议the following syntax

var results = from Item i in myCollectionOfItems
              where i.OneThing = aGoodThing || i.SomeStuff != theBadStuff
              select i;
编辑:抱歉,误解了这个问题 - 我已更新以匹配OR操作的请求。 (我在参考页面上找不到||语法,但我认为它会起作用。compiles on my machine ...

答案 3 :(得分:0)

将您的输出标记为关键字搜索。

然后你可以在where条件中继续说或在c#(||运算符)中。

var query = from row in mytable
            where (row.column == a) || (row.column == b) || //.... etc
            select row

答案 4 :(得分:0)

你可以尝试:

List<string> keywords = new List<string>();
keywords.Add("foo");
keywords.Add("bar");

var results = from item in db.Table
              where keywords.Exists(k => item.Description.Contains(k))
              select item;

但我不确定它会转换为SQL ......