gpt4 book ai didi

c# - Linq 查询和预期结果 -- Distinct 字段

转载 作者:行者123 更新时间:2023-11-30 20:57:54 25 4
gpt4 key购买 nike

我有一个嵌套的 linqsql 查询,用于填充 treeview。绑定(bind)到 treeview 时的第一个选择(Title 字段)正确显示了所有 Titles,但如果出现多次我想要它出现一次。我该如何解决这个问题?

我试过了

              }).Distinct().OrderBy(c => c.LineNumber)

}).Distinct();

完整查询

var results =
(from d in mContext.Docs
orderby d.Title ascending
join b in mContext.Base on d.DocId equals b.DocId
join h in mContext.ViewDocItems on b.BaseId equals h.BaseId
where h.ItemId == mGuid
select new
{
Id = d.DocId,
Title = d.Title,
ClassId = d.ClassId,
BaseHis =
(from c in d.Base

select new BaseHistory()
{
BaseId = c.BaseId,
Name = c.Title,
BaseFinal = c.Final.Value,
LineNumber = c.LineNumber.Value
ItemId = h.ItemId
}).Distinct().OrderBy(c => c.LineNumber)
});

foreach(var r in results)
{
var hist = new DocHistory()
{
Id = r.Id,
Title = r.Title,
ClassId = r.ClassId;
};
foreach(var h in r.BaseHis)
{
hist.BaseHis.Add(h);
}

mHistory.Add(hist);
}

最佳答案

Distinct() 替换为

.GroupBy(x => x.Name).Select(x => x.FirstOrDefault())

这意味着您对 Name(即 Title)进行分组,然后取每个组的第一个元素。

Distinct 不起作用,因为转换为 SQL 后,它会过滤掉所有具有唯一值的记录,每个 BaseIdTitle 值,等

关于c# - Linq 查询和预期结果 -- Distinct 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16447962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com