MY SQL Table的数据用逗号分隔,如:
我的MVC 4项目中有一个字符串数组:
@{
foreach (var pot in Model)
{
string str = pot.Tags;
string[] strT = str.Split(',');
foreach (var poo in strT)
{
<button type="button" class="md-button md-warn @poo.ToLower().Replace(" ", "")">@poo</button>
}
}
}
这个功能的结果:
<button type="button" class="md-button md-warn wordpress">Wordpress</button>
<button type="button" class="md-button md-warn mvc"> MVC</button>
<button type="button" class="md-button md-warn angularjs">AngularJS</button>
<button type="button" class="md-button md-warn mvc"> MVC</button>
<button type="button" class="md-button md-warn csharp"> CSharp</button>
另外,我尝试.Distinct()
方法在拆分后删除重复数据,但我无法正常工作。你有什么想法解决这个问题吗?
答案 0 :(得分:2)
我希望您可以像这样使用Distinct
string[] strT = str.Split(',').Distinct().ToArray();
另一种方法是制作List<string>
而不是数组。
List<string> strT = str.Split(',').Distinct().ToList();
上阅读更多内容
答案 1 :(得分:1)
如果目标只是显示唯一标记,那么您需要先使用http://ui-grid.info/将多个集合展平为一个序列,以便能够正确使用Distinct
来显示没有重复的按钮
@{
var tags = Model.SelectMany(pot => pot.Tags
.Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Trim())
)
.Distinct();
foreach (var tag in tags) {
<button type="button" class="md-button md-warn @tag.ToLower()">@tag</button>
}
}
给出示例中提供的数据会导致
<button type="button" class="md-button md-warn wordpress">Wordpress</button>
<button type="button" class="md-button md-warn mvc">MVC</button>
<button type="button" class="md-button md-warn angularjs">AngularJS</button>
<button type="button" class="md-button md-warn csharp">CSharp</button>
答案 2 :(得分:0)
我将如何做到这一点:
var Model = new List<string>(){ "a,b,c", "b,c,d" };
foreach (var pot in Model.SelectMany(item => item.Split(',')).Distinct())
{
string[] strT = pot.Split(',');
foreach (var poo in strT)
{
Console.WriteLine(poo);
}
}
答案 3 :(得分:0)
试试这个:
@{
List<string> ListWithDups = new List<string>();
foreach (var pot in Model)
{
string str = pot.Tags;
ListWithDups.InsertRange(ListWithDups.Count,str.Split(','));
}
ListWithoutDups = ListWithDups.Distinct().ToList();
foreach (var poo in ListWithoutDups)
{
<button type="button" class="md-button md-warn @poo.ToLower().Replace(" ", "")">@poo</button>
}
答案 4 :(得分:0)
添加System.Linq引用并使用Distinc()方法。 请参阅:https://dotnetfiddle.net/oJKClC
中的运行示例using System;
using System.Linq; // Add the Linq referece
public class Program
{
public static void Main()
{
string str = "Wordpress, MVC, AngularJS, MVC, CSharp, Wordpress, MVC, AngularJS, MVC, CSharp";
string[] strT = str.Replace(" ", string.Empty).Split(',');
strT = strT.Distinct().ToArray();
foreach (var poo in strT)
{
Console.WriteLine(string.Format("<button type='button' class='md-button md-warn {0}'>{0}</button>", poo.ToLower().Trim()));
}
}
}
答案 5 :(得分:0)
尝试代码:
var str1= str.Split(',').Select(c=>c.Trim()).Distinct().ToList();
另一种解决方案是
var str1= str.Split(',').Select(c=>c.Trim()).GroupBy(c => c).ToList();