Linq其中一条记录包含2个匹配的字段

时间:2014-12-23 08:55:06

标签: vb.net linq linq-to-entities

我正在使用一个我无法控制的设计的现有数据库,我正在使用EF4,并使用LINQ进行查询。我在VB.Net工作,但很乐意翻译c#解决方案。

我想从表格中提取记录,其中两个字段与列表中的一对项目匹配。

所以我有一个

列表
Public Class RequestInfo
    Public Property INSP_ROUTINE_NM As String
    Public Property FEATURE_ID As String
End Class

我想查询一个表并拉出任何记录,其中INSP_ROUTINE_NM和FEATURE_ID都匹配一个请求信息项。

我可以在任一字段

上使用包含足够的内容
 Dim Features = (From F In MLDb.TBL_FeatureInfoSet _
      Where (C_Request.Select(Function(x) x.INSP_ROUTINE_NM)).Contains(F.INSP_ROUTINE_NM) Select F.FEATURE_ID, F.FEATURE_RUN_NO, F.INSP_ROUTINE_NM).ToList

我可以使用两个包含调用,但这会拉出任何记录,其中两个记录在列表中的某个位置匹配,不一定是请求中的任何一对。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

<强> C#

var Features= (from f in MLDb.TBL_FeatureInfoSet
              let q = C_Request.Select(x=>x.INSP_ROUTINE_NM)
              where q.Contains(f.INSP_ROUTINE_NM) || q.Contains(f.INSP_ROUTINE_NM)
              // where q.Contains(f.INSP_ROUTINE_NM) && q.Contains(f.INSP_ROUTINE_NM)
              select new {f.FEATURE_ID, f.FEATURE_RUN_NO}).ToList();