Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 通过EF中的方法传递实体类型_Linq_Entity Framework_C# 4.0_Generics_Entity - Fatal编程技术网

Linq 通过EF中的方法传递实体类型

Linq 通过EF中的方法传递实体类型,linq,entity-framework,c#-4.0,generics,entity,Linq,Entity Framework,C# 4.0,Generics,Entity,嗨,我想生成一个通用的linq查询,从数据库中获取所需的下拉信息。我希望能够指定要从上下文中获取数据的实体 e、 g public IEnumerable getListOfDropdowns(int-assignId,tenty-entityname) { 返回上下文..其中(x=>x.assignId==1); } 所有查找表都包含相同的属性。身份证和描述 我现在有 public IQueryable<T> GetLookupByContractorTwo<TEntity

嗨,我想生成一个通用的linq查询,从数据库中获取所需的下拉信息。我希望能够指定要从上下文中获取数据的实体

e、 g

public IEnumerable getListOfDropdowns(int-assignId,tenty-entityname)
{
返回上下文..其中(x=>x.assignId==1);
}
所有查找表都包含相同的属性。身份证和描述

我现在有

public IQueryable<T> GetLookupByContractorTwo<TEntity>(int contractorId, TEntity entity)
{
return _context.Set<entity>().Find(contractorId);
}
public IQueryable GetLookupByContractorTwo(int contractorId,tenty实体)
{
返回_context.Set().Find(contractorId);
}

但是我得到一个错误,说找不到实体并且缺少引用,但是我找不到引用

您可以使用
Find
方法<代码>查找使用主键进行搜索。
Find
的另一个好处是,只有在上下文中找不到实体时,它才会执行到数据库的往返

这应该可以做到:

var result = context.Set<TEntity>().Find(assignId);
var result=context.Set().Find(assignId);
试试这个:

public IQueryable<TEntity> GetLookupByContractorTwo<TEntity>(int contractorId)
{
    return _context.Set<TEntity>().Find(contractorId);
}
public IQueryable GetLookupByContractorTwo(int contractorId)
{
返回_context.Set().Find(contractorId);
}
如果使用泛型,则不需要将类型作为参数传递


编辑 您可能想这样做:

public IQueryable<T> GetLookupByContractorTwo<TEntity>(int contractorId)
{
  return _context.Set(typeof(TEntity)).Find(contractorId);
}
public IQueryable GetLookupByContractorTwo(int contractorId)
{
返回_context.Set(typeof(tenty)).Find(contractorId);
}

您使用的是哪个EF版本?DbSet是泛型的,不是吗?这是:
return\u context.Set().Find(contractorId)没有意义。。。它应该是:
return\u context.Set().Find(contractorId)既然每套下拉列表都有自己的表格,那么我如何从下拉列表中知道需要哪些数据呢?我已经编辑了我的答案。你能添加你试图用来填充下拉列表的代码吗?
public IQueryable<T> GetLookupByContractorTwo<TEntity>(int contractorId)
{
  return _context.Set(typeof(TEntity)).Find(contractorId);
}