use*_*468 12 c# asp.net-mvc parsing linq-to-sql
如何在C#中解析以下名称 - 值对的字符串:
string studentDetail = "StudentId=J1123,FirstName=Jack,LastName=Welch,StudentId=k3342,FirstName=Steve,LastName=Smith"
Run Code Online (Sandbox Code Playgroud)
解析此数组的目的是使用Linq to SQL在DB中插入值:
[HttpPost()]
public ActionResult SaveStudent(string studentDetail)
{
DataContext db = new DataContext();
Student student = new Student();
{
student.StudentID = //StudentID
student.FirstName = //FirstName
student.LastName = //LastName
};
db.Student.InsertOnSubmit(student);
db.SubmitChanges();
return View();
}
Run Code Online (Sandbox Code Playgroud)
接近这个的最佳方法是什么?
Ser*_*rvy 43
您可以在逗号上拆分,然后在等号上拆分.我将数据放入字典中以便于访问.
string input = "StudentId=J1123,FirstName=Jack,LastName=Welch";
Dictionary<string,string> keyValuePairs = input.Split(',')
.Select(value => value.Split('='))
.ToDictionary(pair => pair[0], pair => pair[1]);
string studentId = keyValuePairs["StudentId"];
Run Code Online (Sandbox Code Playgroud)
请注意,这根本不验证输入,以确保值中没有逗号,没有值没有键,缺少键等.
由于单个学生记录未在输入中分隔,因此我会执行以下操作:
public class Student
{
public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
进而:
private List<Student> DoSplit(string input)
{
var theReturn = new List<Student>();
input = input.Replace(",StudentId=", "|,StudentId=");
var students = input.Split('|');
foreach (var student in students)
{
var attribs = student.Split(',');
if (attribs.Count() == 3)
{
var s = new Student();
s.Id = attribs[0].Substring(attribs[0].LastIndexOf('='));
s.FirstName = attribs[1].Substring(attribs[1].LastIndexOf('='));
s.LastName = attribs[2].Substring(attribs[2].LastIndexOf('='));
theReturn.Add(s);
}
}
return theReturn;
}
Run Code Online (Sandbox Code Playgroud)
同样,这有点幼稚,因为如果内容包含“=”、“、”或“|”,则会出现故障。您还应该在那里添加一些检查。
归档时间: |
|
查看次数: |
22903 次 |
最近记录: |