我是LINQ的新手,我希望在C#中将一种数据类型转换为另一种数据类型,以及连接一个字符串。我该如何做到这一点?
例如,SQL语句
是什么SELECT IPv4 = CONVERT(varchar(3), IPv4_octet1) + '.' +
CONVERT(varchar(3), IPv4_octet2) + '.' +
CONVERT(varchar(3), IPv4_octet3) + '.' +
CONVERT(varchar(3), IPv4_octet4) FROM table;
在LINQ? (IPv4_octet在SQL表中存储为tinyints。)
答案 0 :(得分:2)
在这种情况下,我怀疑你可以写:
var query = data.Select(x => x.IpV4Octet1 + "." +
x.IpV4Octet2 + "." +
x.IpV4Octet3 + "." +
x.IpV4Octet4);
更一般地说,你打电话给ToString
,例如:
// You wouldn't want to actually do this, but...
var query = data.Select(x => x.IpV4Octet1.ToString() + x.IpV4Octet4.ToString());
如果你想要更多控制,并且你没有在查询的其余部分中使用结果,你可能希望在.NET端进行格式化 - 只需在选择时使用AsEnumerable
您希望从数据库中获取所有信息,然后在LINQ to Objects中完成剩下的工作。例如:
var query = db.Select(x => new { x.HostName, x.IpV4Octet1, x.IpV4Octet2,
x.IpV4Octet3, IpV4Octet4 })
.AsEnumerable() // Switch to LINQ to Objects for rest of query
.Select(x => new { x.HostName,
Address = string.Format("{0}.{1}.{2}.{3}"),
x.IpV4Octet1,
x.IpV4Octet2,
x.IpV4Octet3,
x.IpV4Octet4) });
答案 1 :(得分:0)
试试这个:
string ipv4 = string.Join('.',octets.Select(o => o.ToString()).ToArray());