C# 如何从linq投射对象
如何转换C# 如何从linq投射对象,c#,.net,asp.net-mvc-4,C#,.net,Asp.net Mvc 4,如何转换查询而不是var 多谢各位 添加更多信息,我想使以下内容成为可能。可能吗 您的查询当前使用选择新{}分配匿名类型,这要求您使用var。如果要分配已知类型,请将其添加到select子句中: var query = (from RESTAURANT in db.RESTAURANTs where RESTAURANT.REST_ID == RestID select new { name = RESTAURANT.name}); IEnu
查询
而不是var
多谢各位
添加更多信息,我想使以下内容成为可能。可能吗
您的查询当前使用
选择新{}
分配匿名类型,这要求您使用var
。如果要分配已知类型,请将其添加到select
子句中:
var query = (from RESTAURANT in db.RESTAURANTs
where RESTAURANT.REST_ID == RestID
select new { name = RESTAURANT.name});
IEnumerable查询=
来自db餐厅的餐厅
where RESTAURANT.REST\u ID==RestID
选择newsometype{Name=RESTAURANT.Name};
公共类SomeType
{
公共字符串名称{get;set;}
}
将鼠标移到var
上,编译器将告诉您它所替代的类型
如果要显式地使用该类型,则需要插入它而不是
var
。但是它不会改变编译器的任何内容。无需单独声明查询
,
使用var查询=?:代码>而不是if else
您可以这样做:
IEnumerable<SomeType> query =
from RESTAURANT in db.RESTAURANTs
where RESTAURANT.REST_ID == RestID
select new SomeType { Name = RESTAURANT.name } ;
public class SomeType
{
public string Name { get; set; }
}
这:
定义一个查询。当程序正在运行且此行已被处理时,query
变量引用查询实例。数据库尚未被调用
如果将(例如).ToList()
附加到语句中,如下所示:
var query = (from RESTAURANT in db.RESTAURANTs
where RESTAURANT.REST_ID == RestID
select new { name = RESTAURANT.name});
List<string> query = (from RESTAURANT in db.RESTAURANTs
where RESTAURANT.REST_ID == RestID
select RESTAURANT.name).ToList();
然后query
将包含从数据库中获取的项目列表。但在本例中,列表中的项目类型仍然是匿名类型,因此您仍然无法将var
更改为命名类型。如果需要,则需要让查询返回已知的命名类型。像这样:
var query = (from RESTAURANT in db.RESTAURANTs
where RESTAURANT.REST_ID == RestID
select new { name = RESTAURANT.name}).ToList();
List query=(来自db.RESTAURANTs中的餐厅)
where RESTAURANT.REST\u ID==RestID
选择RESTAURANT.name).ToList();
或者像这样:
var query = (from RESTAURANT in db.RESTAURANTs
where RESTAURANT.REST_ID == RestID
select new { name = RESTAURANT.name});
List<string> query = (from RESTAURANT in db.RESTAURANTs
where RESTAURANT.REST_ID == RestID
select RESTAURANT.name).ToList();
公共级餐厅
{
公共字符串名称{get;set;}
}
列表查询=(来自db.RESTAURANTs中的餐厅)
where RESTAURANT.REST\u ID==RestID
选择new Restaurant(){Name=Name});
选择餐厅。名称
?我的意思是我不想在查询前使用var
。我想使用特定的类。在这种情况下,您必须使用var
,因为您要投影到匿名类型IEnumerable
无法满足您的需求。或者,为结果创建一个类并使用IEnumerable
。不行,您正在创建一个匿名类型。我将添加更多有关我期望的内容的信息。我会将“具体类型”更改为“已知类型”。生成的匿名类型仍然是一个具体类型。