C# 在同一linq查询中使用distinct和startswith

C# 在同一linq查询中使用distinct和startswith,c#,sql,asp.net,linq,C#,Sql,Asp.net,Linq,我需要为ASP.net MVC应用程序在LINQ中编写以下SQL查询: 从FDCostCenterRequest中选择不同的(成本中心),其中成本中心类似于“10%” FDCostCenterRequest中成本中心列的定义如下: var suggestions = from cc in db.FDCostCenterRequests.Where(cc => cc.COST_CENTER.StartsWith(searchString)).GroupBy(x=>x.COST_CENT

我需要为ASP.net MVC应用程序在LINQ中编写以下SQL查询:

从FDCostCenterRequest中选择不同的(成本中心),其中成本中心类似于“10%”

FDCostCenterRequest中成本中心列的定义如下:

var suggestions = from cc in db.FDCostCenterRequests.Where(cc => cc.COST_CENTER.StartsWith(searchString)).GroupBy(x=>x.COST_CENTER).Select(g=>g.Key)
                          select cc;
公共字符串成本中心{get;set;}

我是这样写的:

IEnumerable<FDCostCenterRequest> suggestions = 
    from cc in db.FDCostCenterRequests.Where(cc => 
    cc.COST_CENTER.StartsWith(searchString)).ToList() select cc;

var selected = from costList in suggestions select costList.COST_CENTER.Distinct();

List<string> dropDownInfos = new List<string>();
foreach (var item in selected)
{
    dropDownInfos.Add(item.ToString());
}
IEnumerable建议=
从db.FDCostCenterRequests.Where中的cc(cc=>
cc.COST_CENTER.StartsWith(searchString)).ToList()选择cc;
var selected=从建议中的成本列表中选择成本列表.COST_CENTER.Distinct();
List dropdownfos=新列表();
foreach(所选中的var项目)
{
添加(item.ToString());
}

但是当我试图查看dropDownInfos内容时,我得到了每个记录的
System.Linq.Enumerable+d_u81
1[System.Char]`。我做错了什么

您不是从每个中心获得不同的成本中心,而是将每个中心转换为组成成本中心的一组不同字符

您可以用不同的方式插入查询,但如果您不在查询语法和方法语法之间进行如此频繁的切换,则会更容易:

var query = db.FDCostCenterRequests
    .Where(cc => cc.COST_CENTER.StartsWith(searchString))
    .Select(cc => cc.COST_CENTER)
    .Distinct();

您并不是从每个中心获得不同的成本中心,而是将每个中心转换为组成成本中心的一组不同字符

您可以用不同的方式插入查询,但如果您不在查询语法和方法语法之间进行如此频繁的切换,则会更容易:

var query = db.FDCostCenterRequests
    .Where(cc => cc.COST_CENTER.StartsWith(searchString))
    .Select(cc => cc.COST_CENTER)
    .Distinct();

由于
string
实现了IEnumerable,因此您的
Distinct
正在对其进行操作。将查询的其余部分用括号括起来,以便
Distinct
对查询进行操作

var selected = (from costList in suggestions
                 select costList.COST_CENTER).Distinct(); 

由于
string
实现了IEnumerable,因此您的
Distinct
正在对其进行操作。将查询的其余部分用括号括起来,以便
Distinct
对查询进行操作

var selected = (from costList in suggestions
                 select costList.COST_CENTER).Distinct(); 

我是通过以下方式得到的:

var suggestions = from cc in db.FDCostCenterRequests.Where(cc => cc.COST_CENTER.StartsWith(searchString)).GroupBy(x=>x.COST_CENTER).Select(g=>g.Key)
                          select cc;

我知道这有点离谱,但还是要感谢你的回答。

我是通过以下方式得到的:

var suggestions = from cc in db.FDCostCenterRequests.Where(cc => cc.COST_CENTER.StartsWith(searchString)).GroupBy(x=>x.COST_CENTER).Select(g=>g.Key)
                          select cc;

我知道这有点绕圈子,但还是要感谢您的回答。

您要向dropdowninfos添加哪些属性?您要向dropdowninfos添加哪些属性?