0

string1:怎么样
string2:你好吗?

我想要做的是通过对照string1检查string2并选择任何具有“How”或“Are”或“you”的记录来选择数据库中的所有记录。

 pager1.ItemCount = appliedQuery.Where(q => q.string1.Contains(string2)).count();

请注意:String1 只是一个单词,我只想获取 db 中的所有记录,以及 string2 中出现的任何单词。

我知道 string2 需要拆分,但是拆分后我如何在 linq 查询语句中使用它来获取记录?

提前致谢

4

3 回答 3

2

拆分string2成一个字符串数组:

string[] words = string2.Split(' ');

然后检查是否string1在数组中的任何项目中:

pager1.ItemCount = appliedQuery.Where(q => words.Contains(q.string1)).Count();
于 2012-07-25T07:26:10.403 回答
1

一种可能的解决方案如下:

foreach(string s in string2.Split(' '))
{
    pager1.ItemCount += appliedQuery.Where(q => q.string1.Contains(s)).count(); 
}
于 2012-07-25T07:19:44.563 回答
1

看看我是如何构建我的 linq 查询的。我希望这有帮助。只需尝试将代码复制并粘贴到控制台应用程序中即可查看结果。

class Program
{
    static void Main(string[] args)
    {
        // List of strings that you may consider it from your 
        /// database which is String1
        List<string> lstStrings = new List<string>();
        lstStrings.Add("twenty one");
        lstStrings.Add("twenty two");
        lstStrings.Add("twenty three");
        lstStrings.Add("twenty four");

        // The string to compare to which is your String2
        string strString = "one two four";

        // Splitting the strings to be compared
        string[] strArray = strString.Split(' '); 

        // The linq that helps you query the data exactly as what you wanted
        var result = (from string A in lstStrings
                               from string B in strArray
                               where A.Contains(B)
                               select A).Distinct();

        // Count result
        Console.WriteLine(result.Count());

        // Individual values
        foreach (string str in result)
        {
            Console.WriteLine(str);
        }

        Console.ReadLine();
    } 
}
于 2012-07-26T04:27:01.337 回答