如何编写linq到sql查询以查找字段名称可以匹配动态字符串数之一的记录?

时间:2012-03-21 20:48:50

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

我让用户在UI中检查实验室设施。我想使用linq来获取他们已经检查过的所有实验室的相应记录。

基本上,

Dim myRecs = (From l As EpiData In myDataContext.EPIDatas Where l.facility= _ 
              one of the checked labs

基本上,我需要编写一个linq查询,其中匹配的“字符串”在运行时确定。有没有办法轻松做到这一点?我知道那里有一个叫做动态LINQ的库,但是(1)它是在C#中我用VB编写的(2)我真的只是在为这个案例寻找一个简单的解决方案。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

使用.Contains

Dim myRecs = (From l As EpiData In myDataContext.EPIDatas 
              Where listOfCheckedLabs.Contains(l.facility))

作为旁注,您可以安全地使用VB.Net中的C#库,反之亦然。当库不符合“CLS”时,可能会出现问题。例如,如果C#库具有返回unsigned int的公共成员,如果VB.NET不支持内存服务,则会出现这种情况。通常情况并非如此,因为库作者应该以符合CLS的代码为目标。

我已经使用Linq to SQL和Linq to Entities进行了测试,只是为了让自己确信这是有效的 - 它确实如此。

使用C#我有这样的代码可以正常工作(使用LINQPad):

var list = new List<string>{ "Test", "Test 2" };
var query = Models.Where (m => list.Contains(m.Description));