Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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/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
C# 使用LINQ从数据库中选择不同的列名_C#_Linq_Webapi - Fatal编程技术网

C# 使用LINQ从数据库中选择不同的列名

C# 使用LINQ从数据库中选择不同的列名,c#,linq,webapi,C#,Linq,Webapi,我有一个表,它有几个列,包括CarMake、CarModel、CarModelLoading等。我想选择不同的CarMake并将它们作为列表返回。 我尝试了以下方法: public IEnumerable<EbimaCarMakesAndModel> GetAll() { //var list<ebima> return (IEnumerable<EbimaCarMakesAndModel>)co

我有一个表,它有几个列,包括CarMake、CarModel、CarModelLoading等。我想选择不同的CarMake并将它们作为列表返回。 我尝试了以下方法:

public IEnumerable<EbimaCarMakesAndModel> GetAll()
        {
            //var list<ebima>
            return (IEnumerable<EbimaCarMakesAndModel>)context.EbimaCarMakesAndModels.Select(l => new { l.CarMake }).Distinct().ToList();
            //var data = (from dbo in context.EbimaCarMakesAndModels where dbo.Listed == "Y" select dbo.CarMake).Distinct().OrderBy(name => name).ToList();

            //return (IEnumerable<EbimaCarMakesAndModel>)data;
}
public IEnumerable GetAll()
{
//变量表
return(IEnumerable)context.EbimaCarMakesAndModels.Select(l=>new{l.CarMake}).Distinct().ToList();
//var data=(来自context.EbimaCarMakesAndModels中的dbo,其中dbo.Listed==“Y”选择dbo.CarMake).Distinct().OrderBy(name=>name.ToList();
//返回(IEnumerable)数据;
}
但无论何时运行应用程序,我都会收到错误:

处理请求时发生未处理的异常。 InvalidCastException:无法将类型为“System.Collections.Generic.List
1[f_uAnonymousType31
1[System.String]]”的对象强制转换为类型为“System.Collections.Generic.IEnumerable`1[motor_backend.Models.EbimaCarMakesAndModel]”。 我也尝试过以下方法,但没有效果:

public IEnumerable GetAll()
{
var res=context.EbimaCarMakesAndModels.GroupBy(x=>new{x.CarMake})。
选择(x=>x.FirstOrDefault())。其中(v=>v.Listed==“Y”).ToList();
返回res;
}
它给了我以下错误:

无法翻译FirstOrDefault()。以可以翻译的形式重写查询,或者通过插入对“AsEnumerable”、“asAsAsAsyncEnumerable”、“ToList”或“ToListSync”的调用显式切换到客户端计算。有关更多信息,请参阅


这里给出的所有解决方案到目前为止还没有回答我的查询

请声明您的方法以返回字符串的IE:

public IEnumerable<string> GetAllMakes()
或者分组并从组列表中返回一些名义上的条目(但这对我来说没有意义)


您的最后一个查询引入了一些附加的未提及的约束<代码>。(v=>v列出==“y”)< /代码> -也许考虑在<代码> EbimaCarMakesAndModels < /C> >之前分组

错误非常清楚-查询返回一个匿名类型,而不是<代码> EBIMACARMAKANDSMODES/<代码>。什么是EbimaCarMakesAndModel?如果它有一个
CarMake
属性,你可以编写
。选择(l=>new EbimaCarMakesAndModel{CarMake=l})。Distinct()
。我不太明白匿名的事情,我在下面找到了一个解决方案,谢谢你指出,这帮我省了很多钱。终于成功了,谢谢@Caius JardNo probs!如果您现在单击灰色复选标记nex to this answer将其变为绿色,它将显示在仪表板上作为已回答,以便人们知道您尚未找到答案。如果对你有帮助的话,你也可以投票表决
public IEnumerable<string> GetAllMakes()
return context.EbimaCarMakesAndModels.Select(l => l.CarMake).Distinct().ToList();
return context.EbimaCarMakesAndModels.GroupBy(x => x.CarMake)
       .Select(x => x.FirstOrDefault()).ToList();