我轻松浏览了string该类的文档,并没有看到任何将任意数量的字符串组合成单个字符串的好工具.我可以在我的程序中提出的最佳程序是
string [] assetUrlPieces = { Server.MapPath("~/assets/"),
"organizationName/",
"categoryName/",
(Guid.NewGuid().ToString() + "/"),
(Path.GetFileNameWithoutExtension(file.FileName) + "/")
};
string assetUrl = combinedString(assetUrlPieces);
Run Code Online (Sandbox Code Playgroud)
private string combinedString ( string [] pieces )
{
string alltogether = "";
foreach (string thispiece in pieces) alltogether += alltogether + thispiece;
return alltogether;
}
Run Code Online (Sandbox Code Playgroud)
但这似乎是太多的代码和太多的低效率(来自字符串添加)和尴尬.
我是ASP.NET MVC和C#的新手,我正在编写一个控制器来传递构建列表所需的信息
Organization 1
Organization 1 - Category 1
Organization 1 - Category 2
Organization 2
Organization 2 - Category 1
Organization 2 - Category 2
Organization 2 - Category 3
Organization 3
Organization 3 - Category 1
Run Code Online (Sandbox Code Playgroud)
所有这些行都是字符串.换句话说,我需要将每个组织与该组织的类别列表相关联.截至目前,这些组织和类别存在于数据库表中,但是当我提取它们时,我需要将它们放在"正确的"C#数据结构中以传递给我的View.
显然我可以做点什么
public struct orgcats
{
string org;
List<string> cats;
}
List<orgcats> oclist;
Run Code Online (Sandbox Code Playgroud)
并附加oclist并传递,但我相信你们中的一个人知道更好的方式并且可以教育我.我希望我的代码具有完美的紧凑性,效率,聪明,可读性和正确性.
所以我有一个控制器正在实现搜索数据库中的文件.用户可以选择按两个字段"组织"和"类别"过滤搜索,也可以将这些下拉菜单保留为"全部".
我有3个表可以使用:
(1)
orgs
---------------------
orgid | orgname
Run Code Online (Sandbox Code Playgroud)
(2)
cats
---------------------
orgid | orgname
Run Code Online (Sandbox Code Playgroud)
(3)
files
------------------------------------------
fileid | orgid | catid | filename
Run Code Online (Sandbox Code Playgroud)
并且文件名是他们正在搜索的内容.为了缩小结果范围,我正在使用files数据库的镜像并从中删除行:
[HttpPost]
public ActionResult AssetSearch (string selectedOrgName, string selectedCatName, string searchVal)
{
PortalData PD = new PortalData();
if (selectedOrgName != "All")
{
var selectedOrgId = PD.orgs.FirstOrDefault(o => o.orgname == selectedOrgName); // Get the orgid corresponding to the selected organization
if (selectedOrgId == null) return Content("Couldn't find row for organization '" + selectedOrgName + "' …Run Code Online (Sandbox Code Playgroud)