我需要在LINQ中为ASP.net MVC应用程序编写以下SQL查询:
select distinct(COST_CENTER) from FDCostCenterRequest where COST_CENTER like '10%'
FDCostCenterRequest中COST_CENTER列的定义如下:
public string COST_CENTER { 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());
}
但是当我尝试查看dropDownInfos内容时,我得到System.Linq.Enumerable+<DistinctIterator>d__81
1 [System.Char]`用于每条记录。我在这里做错了什么?
答案 0 :(得分:2)
var yourItems = db.FDCostCenterRequests.Where(cc => cc.COST_CENTER.StartsWith(searchString)).Select(o=>o.COST_CENTER).Distinct().ToList();
答案 1 :(得分:1)
您无法从每个中心获取不同的成本中心,而是将每个中心转换为构成成本中心的一组不同角色。
您可以用不同的方式对查询进行加括号,但如果您只是不在查询和方法语法之间切换那么多,那就更容易:
var query = db.FDCostCenterRequests
.Where(cc => cc.COST_CENTER.StartsWith(searchString))
.Select(cc => cc.COST_CENTER)
.Distinct();
答案 2 :(得分:1)
由于string
实现了IEnumerable,因此Distinct
正在对其进行操作。将查询的其余部分括在括号中,以便Distinct
对查询进行操作。
var selected = (from costList in suggestions
select costList.COST_CENTER).Distinct();
答案 3 :(得分:0)
我得到了以下内容:
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;
我知道这有点圆,但仍然感谢你的回答。