通过 LINQ C# 根据单词出现情况进行复杂排序列表 [重复]

2024-04-06

可能的重复:
通过 LINQ C# 按单词出现次数对列表进行排序 https://stackoverflow.com/questions/11392014/sort-list-by-occurrence-of-a-word-by-linq-c-sharp

我在这里发布了类似的问题,并得到了不起作用的答案。这是我需要排序的数据。

  ID     Title
  ---    ------
  1      JCB Excavator - ECU P/N: 728/35700
  2      Geo Prism 1995 Geo cart Geo001 -Geo ABS #16213899
  3      Geo Prism 1995 - Geo ABS #16213899
  4      Geo Prism 1995 - ABS #16213899
  5      Wie man BBA reman erreicht
  6      this JCB test JCB
  7      Ersatz Airbags, Gurtstrammer und Auto Körper Teile

我的搜索数据类似于“JCB GEO”。我想以这样的方式对其进行排序,使数据变得像

  ID     Title
  ---    ------
  2      Geo Prism 1995 Geo cart Geo001 -Geo ABS #16213899
  3      Geo Prism 1995 - Geo ABS #16213899
  4      Geo Prism 1995 - ABS #16213899
  6      this JCB test JCB
  1      JCB Excavator - ECU P/N: 728/35700
  5      Wie man BBA reman erreicht
  7      Ersatz Airbags, Gurtstrammer und Auto Körper Teile

首先出现的行是数据具有最长时间的行。因此对于GEO该单词在大多数行中出现的时间最长。 ID 2有最大时间,单词GEO,下一行有2个Geo单词...

我说我发布了这个问题并得到了下面的答案,这不起作用。

List<SearchResult> list = new List<SearchResult>() {
  new SearchResult { Description = "JCB Excavator - ECU P/N: 728/35700" },
  new SearchResult { Description = "Geo Prism 1995 - ABS #16213899" },
  new SearchResult { Description = "Geo Prism 1995 - ABS #16213899" },
  new SearchResult { Description = "Geo Prism 1995 - ABS #16213899" },
  new SearchResult { Description = "Wie man BBA reman erreicht" },
  new SearchResult { Description = "this test JCB" },
  new SearchResult { Description = "Ersatz Airbags, Gurtstrammer und Auto Körper  Teile"   }            
};
var wordsToFind = "Geo JCB".Split();
var values = list.Select(x => new { SearchResult = x, Count = x.Description.Split(' ')
  .Where(c => wordsToFind .Contains(c)).Count() })
  .OrderByDesending(x => x.Count)
  .Select(x => x.SearchResult);

也许你可以这样做? 我用来测试的主控制台程序

static void Main(string[] args)
        {
            var list = SearchResult.GetResult();
            var wordArray = "Geo,JCB".Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            list.Sort((a, b) => {
                int sum1 = 0, sum2=0;
                foreach (var item in wordArray)
                {
                    sum1 += Regex.Matches(a.Description, item).Count;
                    sum2 += Regex.Matches(b.Description, item).Count;
                }

                if (sum1 < sum2) return 1;
                else if (sum1 > sum2) return -1;
                else return 0;
            });
            foreach (var item in list)
            {
                Console.WriteLine(item.Description);
            }
            Console.ReadKey();
        }

搜索结果类

public class SearchResult
    {
        public string Description { get; set; }
        public static List<SearchResult> GetResult()
        {
            var list = new List<SearchResult>()
            {
                new SearchResult(){Description = "JCB Excavator - ECU P/N: 728/35700"},
                new SearchResult(){Description = "Geo Prism 1995 Geo cart Geo001 -Geo ABS #16213899"},
                new SearchResult(){Description = "Geo Prism 1995 - Geo ABS #16213899"},
                new SearchResult(){Description = "Geo Prism 1995 - ABS #16213899"},
                new SearchResult(){Description = "Wie man BBA reman erreicht"},
                new SearchResult(){Description = "this JCB test JCB"},
                new SearchResult(){Description = "Ersatz Airbags, Gurtstrammer und Auto Körper  Teile"}
            };
            return list;
        }
    }

返回您所要求的正确输出...
这是

Geo Prism 1995 Geo cart Geo001 -Geo ABS #16213899
Geo Prism 1995 - Geo ABS #16213899
this JCB test JCB
Geo Prism 1995 - ABS #16213899
JCB Excavator - ECU P/N: 728/35700
Ersatz Airbags, Gurtstrammer und Auto Körper  Teile
Wie man BBA reman erreicht
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 LINQ C# 根据单词出现情况进行复杂排序列表 [重复] 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 如何在高图表中放置自定义标签

    我正在尝试执行官方 HighCharts 小提琴中的操作 http jsfiddle net gh get library pure highcharts highcharts tree master samples highcharts
  • 在 UISearchBar 中自动显示文本光标

    是否可以始终在 UISearchBar 中显示文本光标 不仅在触摸后 add this void viewDidAppear BOOL animated mySearchBar becomeFirstResponder super view
  • 正则表达式解析货币价值

    我需要在 AS3 中编写一个 RegExp 它将 Excel 格式的货币值解析为数字 例如 正则表达式 35 600 00 35600 并检查其格式是否正确 使用 作为千位分隔符 作为小数点 货币符号可以是任何符号 不仅仅是 并且可以位于开
  • 使用 IP 地址而不是域名发送电子邮件

    我试图避免通过 DNS 服务器将电子邮件发送到我托管的虚拟帐户之一上的地址 我知道我可以用方括号将 IP 地址括起来 但如何为服务器上的 虚拟 托管帐户指定邮箱用户名 换句话说 我在虚拟服务器上托管了多个域 所有域共享相同的 IP 地址 明
  • 如何更改列表框中单词的颜色

    我制作了一个带有文本框的表单 它接受一个单词并搜索一堆句子以查看其中是否有任何一个包含该单词 之后我必须显示这些句子并突出显示该单词 我的计划是制作一个列表框并添加里面的句子 我的问题是如何突出显示该单词 我想是通过更改颜色 以便可以区分它
  • Rubocop 仅检查修改的行

    我想在终端上仅针对我在 git 版本化项目中修改的行运行 rubocop 目前 通过谷歌搜索 我看到了适用于整个修改文件的脚本 I found this https gist github com skanev 9d4bec97d5a682
  • Google 网络字体与实际字体文件 - 适用于所有设备

    我正在寻找使用 Josefin Sans 它已列在 Google 网络字体中 我还有 eot svg ttf 和 woff 这意味着与文件完全兼容 据我所知 我的主要问题是 哪个更好 Google 字体加载速度更快吗 是不是更加兼容呢 或者
  • 在 Go 函数中返回本地数组的切片安全吗?

    如果我返回作为函数或方法的局部变量的数组切片 会发生什么情况 Go 是否将数组数据复制到创建的切片中make 容量与切片大小或数组大小匹配吗 func foo uint64 var tmp 100 uint64 end 0 for tmp
  • 无法使用可选参数推断泛型类型

    给定以下方法签名 为什么当显式命名参数时编译器无法自动推断类型 Visual Studio 2010 SP1 能够推断类型并且不会显示任何警告或错误 IEnumerable
  • 屏幕抓取:正则表达式还是 XQuery 表达式?

    我正在回答一些面试的测验问题 问题是关于我如何进行屏幕抓取 也就是说 假设您没有更好的结构化方法来直接查询信息 例如网络服务 则从网页中挑选内容 我的解决方案是使用XQuery表达 该表达式相当长 因为我需要的内容在 HTML 层次结构中相
  • 托管带有数据库的 asp.net 网站

    我在Microsoft Visual Studio 2010的帮助下创建了一个asp net网站 项目 各个项目的数据库是在Microsoft SQL Server Management Studio 2008的帮助下设计的 现在我想在互联
  • Azure 服务总线 1.1 无法启动

    服务总线网关未启动 首先 我尝试完全卸载所有Azure Fabric Service Bus类型的SDK和安装 我已经安装了两个Windows Azure Pack Service Bus 1 1 and Windows Azure Pac
  • Safari Web 扩展中后台服务工作人员发出 HTTP 请求期间出现 CORS 问题

    链接到 Xcode 项目的存储库来测试问题 测试 CORS 问题 https github com nick kadutskyi safari ext cors issue 这个扩展使用 Manifest v3 我有example com
  • 如何 grep 或搜索 OpenSSL 的 .jar 文件?

    我有一个 Android 应用程序正在使用一些 jar 文件 库 我的应用程序因 OpenSSL 漏洞而被拒绝 但找不到包含 OpenSSL 的 jar 文件 如何在我的 MAC 上搜索 Openssl 的 jar 文件 grep Open
  • 解决 Scala 中不明确的隐式转换

    有什么方法可以选择在下面使用 asJavaIterable 吗 我知道我可以拼出该特定的函数名称 但我想知道是否可以声明性地指定我想要的类型 我也很好奇为什么 asJavaIterable 不优先于 asJavaCollection sca
  • 通过通用代码将通知推送到各种设备

    我有一个要求 就是我必须将消息推送给使用 android 或 iphone 设备的各个用户 我知道将推送通知发送到 android 或 iphone 应用程序的各个流程 现在我的工作是我需要用java做服务器端实现 以便可以将消息发送到an
  • 想要使用 32 字节的 AES 256 CBC,但它显示 java.security.InvalidAlgorithmParameterException

    我正在使用 AES 256 CBC 我有 32 字节的 IV 但是当我运行它时 它显示一个异常 Exception in thread main java lang RuntimeException java security Invali
  • 聚焦动态创建的元素

    如何聚焦动态创建的元素 只需致电 focus https developer mozilla org en DOM element focus添加到 DOM 后的元素上 例如 var input document createElement
  • 如何获取滑块的值并实时更新?

    我有一个带有自定义控制栏的 HTML 视频标签 在其中我希望搜索栏和音量栏在用户浏览范围时实时更新其值 目前 音量在用户调整滑块后更新 而不是在用户单击并拖动时更新 在 HTML 中我将它们设置如下 div div
  • 通过 LINQ C# 根据单词出现情况进行复杂排序列表 [重复]

    这个问题在这里已经有答案了 可能的重复 通过 LINQ C 按单词出现次数对列表进行排序 https stackoverflow com questions 11392014 sort list by occurrence of a wor