【问题标题】:Linq Query, Where ContainsLinq 查询,其中包含
【发布时间】:2012-03-22 12:42:21
【问题描述】:

我有一个简单的查询:

SELECT     xObjectID, xObjectName
FROM         dbo.xObject
where  CONTAINS( xObjectRef, '1838 AND 238671')

我正在尝试将其转换为 linq,但我无法让它工作, 它把我逼疯了。

谢谢!

【问题讨论】:

  • 请展示您的尝试

标签: c# .net sql-server linq


【解决方案1】:

全文搜索与 linq to sql 不兼容。您将不得不调用存储过程。

编辑:

或者你想要一个与 sql 返回相同结果集的 linq 查询?

【讨论】:

  • 我才知道它确实是一个全文搜索查询。是否有可能在 linq 中获得相同的结果(性能大致相同?)
  • 真的取决于。 dbo.xObject 表中有多少行?如果没有那么多,那么使用 linq(它将生成一个 sql 'LIKE' 命令)应该没问题。
  • 不,有数千个。我已更改为存储过程。现在研究如何将结果放入另一个数据类。我曾经有 select new FlValue() 但这似乎不适用于存储过程。
  • 另外,xObjectRef 列的类型是什么?它的长度是多少?
  • 是ntext,内容长度为256个字符
【解决方案2】:

这对你有用吗?这确实要求 xObjectRefxObject 的属性。

from obj in dbo.xObject
where obj.xObjectRef.Contains("1838") && obj.xObjectRef.Contains("238671")
select new { xObjectId = obj.xObjectId, xObjectName = obj.xObjectName}

【讨论】:

  • 当然你是对的。我脑子里的某个地方有误会……;)
【解决方案3】:
var query = from c in context.xObject 
             where c.xObjectRef.Contains("1838") && c.xObjectRef.Contains("238671")
             select new { ObjectID = c.xObjectID, ObjectName = c.xObjectName };

【讨论】:

    【解决方案4】:
       var  a = xObject.where(n=>n.Contains("1838") && n.Contains("238671") )).
                        Select(s=>new {xObjectID=s.xObjectID , xObjectName=s.xObjectName});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 2013-12-19
      • 2020-04-17
      • 2016-09-01
      • 1970-01-01
      • 2014-01-01
      相关资源
      最近更新 更多