Linq版本的SQL"IN"语句

Bri*_*man 23 sql linq linq-to-sql

我有以下3个表作为简单的"项目标记"模式的一部分:

== ==项目

  • ItemId int
  • 品牌varchar
  • 名称varchar
  • 价钱
  • 条件varchar
  • 描述varchar
  • 有效位

== ==标签

  • TagId int
  • 名称varchar
  • 有效位

== == TagMap

  • TagMapId int
  • TagId int(fk)
  • ItemId int(fk)
  • 有效位

我想写一个LINQ查询来带回与标签列表匹配的项目(例如TagId = 2,3,4,7).在我的应用程序上下文中,项目的示例将是"计算机监视器","礼服衬衫","吉他"等,标签的示例将是"电子","服装"等.我通常会用SQL来实现这一点.在声明中.

Den*_*ler 50

就像是

var TagIds = new int[] {12, 32, 42};

var q = from map in Context.TagMaps 
        where TagIds.Contains(map.TagId)
        select map.Items;
Run Code Online (Sandbox Code Playgroud)

应该做你需要的.这将生成一个In(12,32,42)子句(或者更具体地说,如果我没有弄错的话,参数化的IN子句).


Luk*_*fer 15

给定的项目数组:

var list = new int[] {2,3,4}
Run Code Online (Sandbox Code Playgroud)

使用:

where list.Contains(tm.TagId)
Run Code Online (Sandbox Code Playgroud)