gpt4 book ai didi

c# - 按 "Relevance Values"排序

转载 作者:IT王子 更新时间:2023-10-29 04:39:49 26 4
gpt4 key购买 nike

我正在处理 Windows 窗体应用程序。我想在 ListView 上应用过滤器。要求是在搜索文件夹中具有给定名称的文件时在 Windows 中实现搜索功能。

原来Windows使用的是Relevance Values订购找到的文件。

我在想,也许 .Net 中有一个内置的解决方案?如果没有,是否有此算法的任何 C# 代码可用于手动排序过滤的对象:

var searchFor = "search";
var newList = oldList.Select(x =>x.Contains(searchFor))
.OrderBy(x => RelevanceValues(x,searchFor))
.ToList();

最佳答案

这是一个实现这个的例子。此示例包含带有文件列表的按相关值排序。

代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
// textBox1 for search string
private System.Windows.Forms.TextBox textBox1;
// listView1 for show result
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.Button button1;

public Form1()
{
InitializeComponent();
}

class MyListViewItem : ListViewItem
{
public int Index { get; set; }
}

private void button1_Click(object sender, EventArgs e)
{
List<MyListViewItem> myList = new List<MyListViewItem>();

// open folder browser to get folder path
FolderBrowserDialog result = new FolderBrowserDialog();
if (result.ShowDialog() == DialogResult.OK)
{
// get all file list
string[] files = Directory.GetFiles(result.SelectedPath);
foreach (string item in files)
{
// find the relevance value based on search string
int count = Regex.Matches(Regex.Escape(item.ToLower()), textBox1.Text.ToLower()).Count;
myList.Add(new MyListViewItem() { Text = item, Index = count });
}
}

List<ListViewItem> list = new List<ListViewItem>();
// add file name in final list with order by relevance value
foreach (var item in myList.OrderByDescending(m => m.Index).ToList())
{
list.Add(new ListViewItem() { Text = item.Text });
}

listView1.Items.AddRange(list.ToArray());
}
}
}

关于c# - 按 "Relevance Values"排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42401247/

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