数据表列表达式 [英] Datatable column expression

查看:78
本文介绍了数据表列表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





在数据表中,我需要通过从同一数据表中的文件名列获取来保存文件扩展名。



对于这个我使用sql表达式如下



Hi,

In a datatable I need to save file extension by getting from a filename column within same datatable.

For this i am using sql expression as below

iif(@str like '%.%',reverse(left(reverse(@str), charindex('.', reverse(@str)) - 1)),'')





这需要在datacolumn默认值中添加





this need to be added in datacolumn default value

dt.Columns.Add("FileExtension", typeof(string), "iif([Resume Doc Name] like '%.%',reverse(left(reverse([Resume Doc Name]), charindex('.', reverse([Resume Doc Name])) - 1)),'')");





但是上面的代码在反向功能时失败。



有任何建议吗?



谢谢



我的尝试:



使用sql表达式以不同的方式尝试



But above code is failing at reverse function.

Any suggestions to achieve this?

Thanks

What I have tried:

Tried in different ways using sql expressions

推荐答案

根据文档 [ ^ ],反向功能不可用。表达式列只有一组函数,即:转换 Len IsNull Iif 修剪子字符串



如果您想要反向文本,可以使用Linq查询。示例:

As per documentation[^], a reverse function is unavailable. There's only set of function for expression column, i.e.: Convert, Len, IsNull, Iif, Trim and Substring.

If you would like to Reverse text, you may use Linq query. Example:
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Columns.Add(new DataColumn("CarType", typeof(string)));
dt.Rows.Add(new object[]{"Skoda", null});
dt.Rows.Add(new object[]{"Volkswagen", "Business"});
dt.Rows.Add(new object[]{"Mazda", "Personal"});
dt.Rows.Add(new object[]{"Renault", "Business"});

var result = dt.AsEnumerable()
	.Select(x=>new
	{
		Name = x.Field<string>("Name"),
		CarType = x.Field<string>("CarType"),
		ReversedName = string.Join("", x.Field<string>("Name").Reverse())
	})
	.ToList();



结果:


Result:

Name       CarType  ReversedName
Skoda      null     adokS 
Volkswagen Business negawskloV 
Mazda      Personal adzaM 
Renault    Business tluaneR 


这篇关于数据表列表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆