none
各位高手,请教一个关于LINQ查询的语句。 RRS feed

  • 常规讨论

  • 我数据库中有一个字段存储的值如下:12,23,56,78,98,65 

    以逗号分隔的一个字符串,现在我想查这个字段中有12的记录。我试过用以下方法

    from s in db.News where s.IdList.Split(',').Contains("12") select s

    它报错说System.String[]不支持比较运算符

    如果直接from s in db.News where s.IdList.Contains("12,") select s

    这样的话肯定不准确。

    请问各位高手,这句LINQ语句该如何写呢。

    2010年7月1日 5:45

全部回复

  • 第二句是正确的,其实转化成Sql 语句就是 where IdList like '%12%' 

    因为字段中你有逗号分隔,所以这样查12是不会误判的。

    2010年7月1日 9:14
  • 第二句是正确的,其实转化成Sql 语句就是 where IdList like '%12%' 

    因为字段中你有逗号分隔,所以这样查12是不会误判的。


    如果我字段中的值是 212,23,46,345

    那这么这样也会查得出的哦。

    2010年7月1日 10:01
  • 感觉应用嵌套查询的效果可能会好一些

     

    2010年7月1日 15:42
  •         static void Main(string[] args)
            {
                String text = "12,23,56,78,98,65,222";
                var falseCheck = text.Split(',').ToList().Contains("22");
                var trueCheck = text.Split(',').ToList().Contains("12");

                Console.WriteLine(falseCheck);
                Console.WriteLine(trueCheck);
                Console.ReadKey();
            }

    Eternal Snow
    2010年7月2日 2:07
  •         static void Main(string[] args)
            {
                String text = "12,23,56,78,98,65,222";
                var falseCheck = text.Split(',').ToList().Contains("22");
                var trueCheck = text.Split(',').ToList().Contains("12");

                Console.WriteLine(falseCheck);
                Console.WriteLine(trueCheck);
                Console.ReadKey();
            }

    Eternal Snow

    您的方法在LINQ TO SQL中使用还是会报  System.String[]不支持比较运算符 这个错误!
    2010年7月3日 3:48
  •  

    from s in db.News
    
    let str = s.IdList.Split(',')
    
    where str.Contains("12") 
    
    select s

     

    2010年7月7日 1:29
  • .ToList().Contains("xxx"); 如果可以也应该是 is 逻辑,不是包含!
    2010年8月2日 8:28