我有3个逗号分隔的字符串FirstName, MiddleInitial, LastName
我有一个班级NameDetails
:
public class NameDetails
{
public string FirstName { get; set; }
public string MiddleInitial { get; set; }
public string LastName { get; set; }
}
我将字符串的值设为:
FirstName ="John1, John2, John3"
MiddleInitial = "K1, K2, K3"
LastName = "Kenndey1, Kenndey2, Kenndey3"
我需要使用逗号分隔字符串中的值填充NameDetails列表。
任何linq为此?我需要这个用于我的asp.net mvc(C#)应用程序。
答案 0 :(得分:11)
我并不一定提倡这是一个很好的解决方案,但它会按照你的要求行事,即“在LINQ中做”。
它也可能不是最有效的解决方案。
string FirstName ="John1, John2, John3";
string MiddleInitial = "K1, K2, K3";
string LastName = "Kenndey1, Kenndey2, Kenndey3";
List<String> fn = new List<String>(FirstName.Split(','));
List<String> mi = new List<String>(MiddleInitial.Split(','));
List<String> ln = new List<String>(LastName.Split(','));
IEnumerable<NameDetails> result = from f in fn
join i in mi on fn.IndexOf(f) equals mi.IndexOf(i)
join l in ln on fn.IndexOf(f) equals ln.IndexOf(l)
select new NameDetails {f, i, l};
我首先使用LINQPad来尝试这个(使用匿名类,而不是NameDetails calss)。
答案 1 :(得分:1)
您可以使用 Linq to CSV 库。
答案 2 :(得分:1)
除了我之前的回答,您还可以尝试:
// some setup
string firstName ="John1, John2, John3";
string middleInitial = "K1, K2, K3";
string lastName = "Kenndey1, Kenndey2, Kenndey3";
var fn = firstName.Split(',');
var mi = middleInitial.Split(',');
var ln = lastName.Split(',');
// the important bit
var s = fn.Select((f, index) => new NameDetails {f, i = mi[index], l = ln[index]});
对于具有不等条目数的字符串数组,它将是脆弱的。