是否可以使用返回类型返回如下所示的linq查询,或者它是否只是像foreach语句一样只读它?
谢谢!
var s = "sean oneill, 26/06/1985; matt sheridan, 22/09/1984; Jenny Hutching, 21/03/1972";
var s9 = ParseDateOfBirth(s);
private string ParseDateOfBirth(string info)
{
return info.Split(';').Select(n => n.Split(',')).Select(n => new { name = n[0].Trim(), datetime = DateTime.ParseExact(n[1], "d/M/yyyy", CultureInfo.InvariantCulture)});
}
答案 0 :(得分:2)
你的linq表达式在结尾处返回一个匿名对象。所以你不能使用string作为你方法的返回类型。
您可以使用动态作为类型
private dynamic ParseDateOfBirth(string info)
{
return info.Split(';')
.Select(n => n.Split(','))
.Select(n => new {
name = n[0].Trim(),
datetime = DateTime.ParseExact(n[1].Trim(),
"d/M/yyyy",
CultureInfo.InvariantCulture) });
}
甚至更好,创建一个DTO来表示您要返回的数据并使用
public class UserInfo
{
public string Name { set; get; }
public DateTime Datetime { set; get; }
}
private IEnumerable<UserInfo> ParseDateOfBirth(string info)
{
return info.Split(';').Select(n => n.Split(','))
.Select(n => new UserInfo {
Name = n[0].Trim(),
Datetime = DateTime.ParseExact(n[1].Trim(),
"d/M/yyyy", CultureInfo.InvariantCulture) });
}
现在,当您使用输入
调用此方法时var s = "sean oneill, 26/06/1985; matt sheridan, 22/09/1984; Jenny Hutching, 21/03/1972";
var result = ParseDateOfBirth(s);
变量result
将是3个UserInfo
个对象的集合。