我正在创建一个"文件夹" MVC系统。 (C#+身份)
用户可以创建"文件夹"如果相同的名称与另一个文件夹相匹配,则必须在名称中添加(编号)。
文件夹:
让我们说新用户想要添加另一个名为Test的文件夹。
基本我需要计算多少"文件夹"存在于exact name
或Exact name + (number)
int count = db.Folders.Where(i => i.Name == Name).ToList().Count
它应该返回(使用正确的逻辑)count = 2
。然后create Test (2)
我似乎无法弄清楚如何重新编写代码,因此我根据逻辑正确计算匹配。有人能指出我正确的方向吗?。
答案 0 :(得分:1)
此
db.Folders.Where(i => i.Name == Name).ToList().Count
将为您提供名称正确的匹配#34;名称"。
我认为你必须查询名称的起始位置"姓名"和长度="名称" +空格+支架+数字+支架。
然后你必须确保你没有得到像"测试(e)"但是"测试(3)"
修改的
请注意,您必须获取名称而不是仅计数,因为您可能会遇到以下情况:
在这种情况下,您的文件夹必须是"测试(2)"相反"测试(4)"或"测试(14)"
可能有很好的算法,但这就是我现在的想法:
您将获得以文件夹名称开头的名称列表:
var items = db.Folders.Where(i => i.Name.StartsWith(Name)).ToList();
然后:
string whatIWant = Name;
for(int i=1;; i++)
{
whatIWant = Name + " (" + i.ToString() + ")";
if(!items.Contains(whatIWant))
{
break;
}
}
// proceed with insert