LINQ Group By Count for Many to Many(LINQ Group By Count for Many to Many)
我有2个实体,有1对多的关系,我打算把它切换成多对多,但我需要帮助进行分组和计数。
SearchString - >许多JobResults
SearchSting用于查找作业结果,作业结果存储为SearchString的集合属性:
public class SearchString { public int SearchStringId { get; set; } public string SearchStringName { get; set; } public string query { get; set; } public JobFunction JobFunction { get; set; } public JobSeniority JobSeniority { get; set; } public virtual ICollection<JobSearchResult> results { get; set; } } public class JobSearchResult { public int JobSearchResultId { get; set; } public string jobtitle { get; set; } public string company { get; set; } public virtual SearchString SearchString { get; set; } }
我得到了所有工作结果的前5个JobFunction,如下所示:
var top5jobfunctions = JobSearchResults.Where(a => (a.SearchString != null)). GroupBy(s => new { s.SearchString.JobFunction.JobFunctionId, s.SearchString.JobFunction.JobFunctionName }). Select(g => new { value = g.Key.JobFunctionId, displayname = g.Key.JobFunctionName, count = g.Count() }). OrderByDescending(x => x.count). Take(5).ToList();
我打算把它切换成多对多:
public class SearchString { public int SearchStringId { get; set; } public string SearchStringName { get; set; } public string query { get; set; } public JobFunction JobFunction { get; set; } public JobSeniority JobSeniority { get; set; } public virtual ICollection<JobSearchResult> results { get; set; } } public class JobSearchResult { public int JobSearchResultId { get; set; } public string jobtitle { get; set; } public string company { get; set; } public virtual ICollection<SearchString> SearchStrings { get; set; } }
一旦将其切换为多对多,我如何才能获得前5个作业功能?
我选择正确方法的结构是什么? 例如,我想知道是否有一个搜索结果的子集合可能不是最好的方法,也许我应该让SearchStrings成为JobResult的集合属性。
I have 2 entities, with a 1 to many relationship, and I'm going to switch it to many to many but I need help with grouping and counts.
SearchString -> many JobResults
A SearchSting is used to find job results and job results are stored as a collection property of SearchString:
public class SearchString { public int SearchStringId { get; set; } public string SearchStringName { get; set; } public string query { get; set; } public JobFunction JobFunction { get; set; } public JobSeniority JobSeniority { get; set; } public virtual ICollection<JobSearchResult> results { get; set; } } public class JobSearchResult { public int JobSearchResultId { get; set; } public string jobtitle { get; set; } public string company { get; set; } public virtual SearchString SearchString { get; set; } }
I get the top 5 JobFunctions of all job results as follows:
var top5jobfunctions = JobSearchResults.Where(a => (a.SearchString != null)). GroupBy(s => new { s.SearchString.JobFunction.JobFunctionId, s.SearchString.JobFunction.JobFunctionName }). Select(g => new { value = g.Key.JobFunctionId, displayname = g.Key.JobFunctionName, count = g.Count() }). OrderByDescending(x => x.count). Take(5).ToList();
I'm going to switch it to many to many as such:
public class SearchString { public int SearchStringId { get; set; } public string SearchStringName { get; set; } public string query { get; set; } public JobFunction JobFunction { get; set; } public JobSeniority JobSeniority { get; set; } public virtual ICollection<JobSearchResult> results { get; set; } } public class JobSearchResult { public int JobSearchResultId { get; set; } public string jobtitle { get; set; } public string company { get; set; } public virtual ICollection<SearchString> SearchStrings { get; set; } }
How do I get my top 5 jobfunctions counts once I switch it to many to many?
Also, is the structure I chose the right approach? For example I wonder if having jobresults a child collection of SearchString was maybe not the best way to go and that perhaps I should just have SearchStrings be a collection property of JobResult.
原文:https://stackoverflow.com/questions/40326141
最满意答案
尝试这个
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string[] trackingNumbers = {"5551212699300000962610", "5551212699300000962611", "5551212699300000962612"}; XElement trackFieldRequest = new XElement("TrackFieldRequest", new object[] { new XAttribute("PASSWORD", "password"), new XAttribute("USERID", "prodsolclient"), new XAttribute("APPID", ""), new XElement("Revision",1), new XElement("ClientIp", "111.0.0.1") }); foreach (string trackingNumber in trackingNumbers) { trackFieldRequest.Add(new XElement("TrackID", trackingNumber)); } string xml = trackFieldRequest.ToString(); } } }
Try this
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string[] trackingNumbers = {"5551212699300000962610", "5551212699300000962611", "5551212699300000962612"}; XElement trackFieldRequest = new XElement("TrackFieldRequest", new object[] { new XAttribute("PASSWORD", "password"), new XAttribute("USERID", "prodsolclient"), new XAttribute("APPID", ""), new XElement("Revision",1), new XElement("ClientIp", "111.0.0.1") }); foreach (string trackingNumber in trackingNumbers) { trackFieldRequest.Add(new XElement("TrackID", trackingNumber)); } string xml = trackFieldRequest.ToString(); } } }
相关问答
更多-
使用带有元素和属性的XmlSerializer创建XML文件(Create an XML File using XmlSerializer with elements and attributes)[2022-08-05]
容易一个。 让我们走另一条路。 如果你是XML结构,那么使用xsd.exe为你的xml生成C#文件(你可以谷歌如何生成) 然后它只是使用您的C#类将其写入XML文件。 Easy one. Lets go with the other way round. If you the XML structure, then generate C# file for your xml, using xsd.exe(you can google how to generate) Then its just writin ... -
读入XML文件后,您需要手动修剪空白 root d = (root)new XmlSerializer(typeof(root)).Deserialize(xml_reader); for (int i = 0; i < d.elements.Count; i++) { d.elements[i] = d.elements[i].Replace("\n", String.Empty).Trim(); } After reading in the XML file, you need to manual ...
-
您需要在调用XmlWriter.Create()之前在XmlWriterSettings类中设置适当的属性。 另外,我建议进行以下额外更改: Stream和XmlWriter都是一次性的 ,因此应该包含在using语句中,以防在写入文件时抛出异常。 为清楚起见,分离出一个通用方法来序列化代码中的任何对象,以计算和编写OrderedItem类。 从而: private void SerializeObject(string filename) { XmlSerializer s ...
-
尝试这个 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { strin ...
-
不,不要那样做。 如果需要序列化超过ObservableCollection,则定义包含类型并序列化它 。 public static void SaveBehaviors(ObservableCollection listParams) { XmlSerializer _paramsSerializer = new XmlSerializer(typeof(ContainingType)); var c = new ContainingType(listParams); ...
-
如何用c#XmlSerializer验证xml,不包含xmlns = ...?(How to validate xml, not containing xmlns=…, with c# XmlSerializer?)[2022-04-24]
static void Main() { var settings = new XmlReaderSettings(); settings.NameTable = new NameTable(); var nsMgr = new XmlNamespaceManager(settings.NameTable); nsMgr.AddNamespace("", "http://example.com/2013/ns"); // <-- set default namespace ... -
如有疑问,请为XML文档创建XML架构并在xsd.exe上运行xsd.exe 。 然后,您可以查看(或使用)生成的代码。 为了帮助您入门,这是一个与您上面发布的XML相匹配的XML架构。 运行xsd.exe /c /f /n:Your.Namespace.Here FileName.xsd以生成代码。使用LINQ to XML来分析您的XML。 使用LINQ to XML解析xml到类对象 XDocument doc = XDocument.Parse(xml); var result = from c in doc.Descendants("LiveModelStruct") select new LiveModelStruct() { version = (string)c.Element("version" ...
如何使用XmlSerializer C#读取XML文件[重复](How to read XML file using XmlSerializer C# [duplicate])[2022-03-02]
尝试这个... Usings ... using System.Collections.Generic; using System.IO; using System.Xml.Serialization; 类...(使用http://xmltocsharp.azurewebsites.net/从XML创建) [XmlRoot(ElementName = "section")] public class Section { [XmlElement(ElementName ...你可以使用组合而不是继承 [XmlRoot(ElementName = "subject_datas")] public class SubjectDatas { [XmlElement(ElementName = "subject_data")] public ListSubjectDatas2 { get; set; } public SubjectDatas(IEnumerable 相关文章
更多- SQL中GROUP BY与HAVING的用法
- hive2solr时count的一个bug
- 利用Linq + Ajax 异步分页实现单个删除,批
- 求一个group by后面字段顺序影响结果的例子
- solr分组排序实现group by功能
- 【Hadoop学习】在伪分布式Hadoop上实践word count程序——C/C++ Pipes版本
- 【Hadoop实战】在伪分布式Hadoop上手把手实践Word Count程序
- Hadoop查看目录空间使用情况
- sql问题
- 使用.net调用Solr
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)