【问题标题】:Getting the selected datalist by an array通过数组获取选定的数据列表
【发布时间】:2014-04-14 10:59:05
【问题描述】:

我要问一个非常基本的问题,并且可能会重复一个问题,但我的情况有点不同。 我想在 Linq 中使用“in”运算符。 我必须从提供 Id 的表中获取所有行 通过我的数组并返回该行(如果有)。我该怎么做。

我的数组有

var aa="1091","1092","1093" 等等。

我的表使用这些 Id 作为主键 .我必须获取所有 Id 包含在数组中的行,我不想使用 S.P.

【问题讨论】:

标签: c# linq asp.net-mvc-3 linq-to-sql


【解决方案1】:

你可以使用Enumerable.Contains

var aa = new string[3] { "1091", "1092", "1093" };
var res = yourDataSource.Where(c => aa.Contains(c.ID));

【讨论】:

  • contains 在这里不起作用,还是在这种情况下也能起作用?
【解决方案2】:

IN 语句是通过在您的Where 调用中使用Contains 创建的。假设你使用整数作为 ID,你可以这样写:

var myArray=new[]{1091,1092,1094};
var myEntities=from entity in myTable
               where myArray.Contains(entity.ID)
               select entity;

【讨论】:

  • 实际上我正在尝试这样的事情:: var myEntities = from entity in ObjReport where RowArray.Contains(entity.ID.ToString()) select entity;
  • 我对此感到空虚。
  • 实际上,我根据 Id.Id 在其中搜索记录的来源是 int 类型,但是我将 Id 作为字符串获取的数组,我无法获得所需的结果.
  • 您可以使用 int.Parse 轻松地将字符串转换为整数,例如 myStringIds.Select(s=>int.Parse(s)).ToArray()。在 LINQ 语句中添加转换是一个坏主意,因为您的提供者可能不知道如何将 ToString() 转换为 SQL 语句。在 L2S 中,它会尝试加载 everything,然后在每个实体上执行 ToString()。在 EF 中,它会以编译错误直接拒绝
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多