簡體   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