gpt4 book ai didi

c# - LINQ 计数出现次数

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:41 25 4
gpt4 key购买 nike

我正在尝试编写 LINQ 查询来计算某种类型的出现次数。

像这样:

 var qry = from c in db.XBLRegionalContents
where c.PublishDate <= DateTime.Today
group c by c.ContentId into grouped
select new FeaturedViewModel { XBLRegionalContent = db.XBLRegionalContents.Find(grouped.Key), RegionCount = grouped.Count() };

但是有一点不对。我想显示 XBLRegionalContents 对象,其中包含它在 db 上的区域数量。

有人可以帮我解决这个问题吗?

谢谢。

更新

这是 XBLRegionalContent 的代码

public class XBLRegionalContent
{
[Key, Column(Order = 0)]
public string ContentId { get; set; }
[ForeignKey("ContentId")]
public virtual XBLContent Content { get; set; }

[Key, Column(Order = 1)]
public string RegionId { get; set; }
[ForeignKey("RegionId")]
public virtual XBLRegion Region { get; set; }

public string Name { get; set; }

public string Description { get; set; }
}

最佳答案

我认为您的问题出在您的 Find 语句上。 Find() 应该采用返回 true 或 false 的谓词。您只是传递一个字符串,所以我猜这只是循环遍历您集合中的每个项目。

我对您的示例代码进行了一些改动,并用 LinqPad 组合了一个小示例来演示如何使用 Find。您应该获得计数为 2 的“a”的 contentID,其他所有内容的计数为 1。

(Dump() 方法特定于 LinqPad——它只是打印出对象或集合的所有属性。)

void Main()
{
var XBLRegionalContents = new List<XBLRegionalContent>(){
new XBLRegionalContent { contentID = "a", ID = "aa" },
new XBLRegionalContent { contentID = "b", ID = "bb" },
new XBLRegionalContent { contentID = "a", ID = "cc" },
new XBLRegionalContent { contentID = "d", ID = "dd" }
};

XBLRegionalContents.Dump();

var qry = from c in XBLRegionalContents
group c by c.contentID into grouped
select new { xbl = XBLRegionalContents.Find(x => x.contentID == grouped.Key), regionCount = grouped.Count() };

qry.Dump();
}

// Define other methods and classes here
public class XBLRegionalContent{
public string contentID {get;set;}
public string ID {get;set;}
}

希望这对您有所帮助。如果还有其他问题,请告诉我。祝你好运!

关于c# - LINQ 计数出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8899540/

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