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
。不行,您正在创建一个匿名类型。我将添加更多有关我期望的内容的信息。我会将“具体类型”更改为“已知类型”。生成的匿名类型仍然是一个具体类型。