C# 如何在c中查询以数组或列表作为参数的linq到sql

C# 如何在c中查询以数组或列表作为参数的linq到sql,c#,sql-server,linq-to-sql,C#,Sql Server,Linq To Sql,我想使用LINQ to SQL查询SQL数据库,并按本地集合进行筛选 我有一个本地MyStrings列表和一个tbl_journal_comptable表 我想在tbl_journal_comptable表中找到tbl_journal_comptable.compte列以myString中的任何字符串开头的行 我希望生成的TSQL在概念上看起来像这样,当然它实际上不能加入本地列表: 选择t* 来自tbl\u日记账\u comptable t 在t.Compte上像s.theString+'%一样

我想使用LINQ to SQL查询SQL数据库,并按本地集合进行筛选

我有一个本地MyStrings列表和一个tbl_journal_comptable表

我想在tbl_journal_comptable表中找到tbl_journal_comptable.compte列以myString中的任何字符串开头的行

我希望生成的TSQL在概念上看起来像这样,当然它实际上不能加入本地列表:

选择t* 来自tbl\u日记账\u comptable t 在t.Compte上像s.theString+'%一样加入MyStrings 我相信LINQ查询需要如下所示:

var query=来自context.tbl\u journal\u comptable中的项目 从myString中的myString 其中item.Compte.StartsWithmyString 选择项目; 但是,我无法以这种方式将SQL表连接到本地创建的列表。错误是

System.NotSupportedException:在查询运算符的LINQ到SQL实现中不能使用本地序列,但Contains运算符除外

我不能使用Contains,因为我需要连接上的like语义


有人能帮忙吗?我认为单用一个LINQ查询可能不可能做到这一点。

如果没有错误-您的数据库中是否有ID为[1,2,3]的项目?如果您发布的不是您的确切代码,我建议发布您的版本,以便我们可以确切地看到您在做什么。@OlivierRogier数组可能是{602603}。OP想要ID以602或603开头的任何项目。例如,他们希望匹配603Bob。@AboubacarTraore问题是,您在原始问题中使用的Contains试图使用名为Contains的LINQ扩展方法,但实际上您也需要string.Contains样式的功能。这样的评论就有点出轨了。我建议重新发布这个问题,这一次包括您希望生成的TSQL语句,我相信这将是select items.*从items中加入items上的id。id像ids.value+“%”这实际上是一个非常好的问题,只是措辞不恰当。简短的回答是,没有很好的方法可以做到这一点。最好的方法是对每个搜索词执行多个查询,并合并结果。或者构建一个存储过程来执行此操作并调用存储过程我认为这是可能的,但没有尝试过。如果没有错误-您的数据库中是否有ID为[1,2,3]的项目?如果您发布的不是您的确切代码,我建议发布你的版本,这样我们就可以准确地看到你在做什么。@OlivierRogier数组可能是{602603}。OP想要ID以602或603开头的任何项目。例如,他们希望匹配603Bob。@AboubacarTraore问题是,您在原始问题中使用的Contains试图使用名为Contains的LINQ扩展方法,但实际上您也需要string.Contains样式的功能。这样的评论就有点出轨了。我建议重新发布这个问题,这一次包括您希望生成的TSQL语句,我相信这将是select items.*从items中加入items上的id。id像ids.value+“%”这实际上是一个非常好的问题,只是措辞不恰当。简短的回答是,没有很好的方法可以做到这一点。最好的方法是对每个搜索词执行多个查询,并合并结果。或者构建一个存储过程来执行此操作,并调用存储过程。我认为这是可能的,但还没有尝试过。