[英]Datatable select value where field type is unknown or at run time
我有一个简单的linq查询
linqdt.AsEnumerable()
.Where(w => (w.Field<string>(options.SelectedColumn)).Contains(options.Value))
.CopyToDataTable();
如果SelectedColumn类型为字符串(a.Field),这将返回我的结果。 现在我的问题是option.SelectedColumn可能是多种类型。 它可能是字节,日期,GUID等,我在运行时才知道这些类型。
我想知道是否有什么办法可以传递像w.Field这样的变量,并且该变量包含基于SelectedColumn的数据类型? 如果否,还有其他可能性吗?
任何帮助将受到高度赞赏
由于Contains
仅适用于字符串值,因此我将使用if
语句检查字符串值,并将非通用列访问器和Equals
用于其他列:
DataTable result;
if(linqdt.Columns[options.SelectedColumn].DataType == typeof(string))
result = linqdt.AsEnumerable()
.Where(w => (w.Field<string>(options.SelectedColumn))
.Contains(options.Value))
.CopyToDataTable();
else
result = linqdt.AsEnumerable()
.Where(w => (w[options.SelectedColumn]).Equals(options.Value))
.CopyToDataTable();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.