C# 无法在LINQ to Entities查询中构造实体或复杂类型?
这是我的代码,我希望有人能启发我:C# 无法在LINQ to Entities查询中构造实体或复杂类型?,c#,entity-framework,linq,C#,Entity Framework,Linq,这是我的代码,我希望有人能启发我: public async Task<ActionResult> Search() { NameValueCollection filter = HttpUtility.ParseQueryString(Request.Params.ToString()); string term = filter["term"]; var query = db.ProductGraphicsCards .Where(pgc =&g
public async Task<ActionResult> Search()
{
NameValueCollection filter = HttpUtility.ParseQueryString(Request.Params.ToString());
string term = filter["term"];
var query = db.ProductGraphicsCards
.Where(pgc => pgc.GraphicsCardSKU.StartsWith(term))
.Select(pgc => new ProductGraphicsCard()
{
GraphicsCardSKU = pgc.GraphicsCardSKU,
GraphicsCardMemory = pgc.GraphicsCardMemory
};
var products = await query.ToListAsync();
List<string> items = new List<string>();
foreach (var product in products)
{
items.Add(product.GraphicsCardSKU + " / " + product.GraphicsCardMemory.ToString());
}
return Json(items, JsonRequestBehavior.AllowGet);
}
公共异步任务搜索()
{
NameValueCollection筛选器=HttpUtility.ParseQueryString(Request.Params.ToString());
字符串项=过滤器[“项”];
var query=db.ProductGraphicsCards
.Where(pgc=>pgc.GraphicsCardSKU.StartsWith(术语))
.Select(pgc=>newproductgraphicscard()
{
GraphicsCardSKU=pgc.GraphicsCardSKU,
GraphicsCardMemory=pgc.GraphicsCardMemory
};
var products=await query.ToListAsync();
列表项=新列表();
foreach(产品中的var产品)
{
添加(product.GraphicsCardSKU+“/”+product.GraphicsCardMemory.ToString());
}
返回Json(items,JsonRequestBehavior.AllowGet);
}
给我一个错误,我不明白为什么在这里
。选择(pgc=>newproductgraphicscard()
您正试图投影到实体类中。我不知道为什么,但实体框架不支持它(因此NotSupportedException
)
解决此问题的一种方法是投影到匿名类型:
var query = db.ProductGraphicsCards
.Where(pgc => pgc.GraphicsCardSKU.StartsWith(term))
.Select(pgc => new
{
GraphicsCardSKU = pgc.GraphicsCardSKU,
GraphicsCardMemory = pgc.GraphicsCardMemory
};
var products = await query.ToListAsync();
// ...
这里
。选择(pgc=>newproductgraphicscard()
您正试图投影到实体类中。我不知道为什么,但实体框架不支持它(因此NotSupportedException
)
解决此问题的一种方法是投影到匿名类型:
var query = db.ProductGraphicsCards
.Where(pgc => pgc.GraphicsCardSKU.StartsWith(term))
.Select(pgc => new
{
GraphicsCardSKU = pgc.GraphicsCardSKU,
GraphicsCardMemory = pgc.GraphicsCardMemory
};
var products = await query.ToListAsync();
// ...
我想问题就在这里。您将无法将结果提取到映射的实体ProductGraphicsCard
。请尝试提取到未映射的DTO或匿名类型
var query = db.ProductGraphicsCards
.Where(pgc => pgc.GraphicsCardSKU.StartsWith(term))
.Select(pgc => new {
pgc.GraphicsCardSKU,
pgc.GraphicsCardMemory
};
我想问题就在这里。您将无法将结果提取到映射的实体ProductGraphicsCard
。请尝试提取到未映射的DTO或匿名类型
var query = db.ProductGraphicsCards
.Where(pgc => pgc.GraphicsCardSKU.StartsWith(term))
.Select(pgc => new {
pgc.GraphicsCardSKU,
pgc.GraphicsCardMemory
};
请添加完整错误。请添加完整错误。