相关疑难解决方法(0)

获取其键匹配id列表(或数组)的实体

我正在使用CodeFirst EntityFramework.我有一个IQueryable<User>使用context.Users返回的实体; 其中context是EntityFramework的DbContext.从这个列表中我必须选择Id包含在Ids(long)数组中的那些.Id是用户实体的主键.我尝试了以下但得到编译器错误.

IQueryable<User> users = GetQueryableUsers(); 
long [] ids = GetSelectedIds(); //array of long representing Ids key of User entities
users.Intersect(ids); // compilation error
users.Where(user => ids.Contains(user.Id)); //compilation error
Run Code Online (Sandbox Code Playgroud)

编译错误是(没有找到Intersect/Contains的定义)注意:System.Linq已经导入.

linq linq-to-entities entity-framework-4.1

10
推荐指数
1
解决办法
2万
查看次数

使用LINQ从数组查询Int ID

我有一个ID数组,我想通过Linq查询传递给实体框架以返回任何匹配

我编写了Linq查询,可以将Ids转换为字符串并使用'Contains'运算符,例如:

模型

public class Order {
  public long OrderId { get; set; }
  public string Name { get; set; } ...}

Order[] orders = { new Order { OrderId = 123, Name = "Order1" }, new Order {...},...};
Run Code Online (Sandbox Code Playgroud)

我可以使用类似的东西:

long[] testArray = {123, 456};
Run Code Online (Sandbox Code Playgroud)

然后

var result = orders.Where(i => testArray.ToString().Contains(i.OrderId.ToString()));
Run Code Online (Sandbox Code Playgroud)

但我真的需要继续将Ids投射到弦上吗?如果我将它们保持为整数,我看起来好像无法访问'Contains'.

最终,我希望能够将此作为访问实体框架的查询的一部分,因此将查询作为IQueryable <>的一部分传递,以确保当我只需要一个handfull时,我不会返回大量的数据,例如如:

var orders = _repo.Orders().Where(i => orderArray.Contains(i.OrderId));
Run Code Online (Sandbox Code Playgroud)

所以任何解决方案如果通过EF查询params(int数组)而不是获取所有数据然后在内存中检查它将是有用的.

干杯!

c# linq

7
推荐指数
1
解决办法
2万
查看次数

意外-无法比较类型'System.Int32 []'的元素。仅支持原始类型,枚举类型和实体类型

任何想法在EF DbContext查询中可能出现什么问题?据我了解,这应该按照SO同伴来进行。

我试过列表,空值检查,不是空值检查,但没有用。但是,如果我删除了null检查并仅保留,则查询确实起作用Contains()。但是,如果testID为null,则必须返回所有记录。

var testIDs = new int[] { 1, 3 };
var test = session.All<VendorBooking>(x => testIDs == null || testIDs.Contains(x.VendorServiceID)).ToList();
Run Code Online (Sandbox Code Playgroud)

(session.All只是利用context.Set<T>.Where()

引发异常:EntityFramework.SqlServer.dll中的“ System.NotSupportedException”

附加信息:无法比较'System.Int32 []'类型的元素。仅支持原始类型,枚举类型和实体类型。

在此处输入图片说明

非常感谢

.net c# lambda entity-framework

4
推荐指数
1
解决办法
3727
查看次数