繁体   English   中英

字段类型未知或运行时的数据表选择值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM