【问题标题】:How to filter DataRow column containing url in c#如何在c#中过滤包含url的DataRow列
【发布时间】:2019-03-11 05:51:37
【问题描述】:

我正在使用以下查询

DataRow[] oFilteredRows = 
    oTrgFTPTrigList.Select($"ftpPath='{oSrcRow["ftpPath"]}' 
    and ftpUserName='{oSrcRow["ftpUserName"]}'");

但它失败了,因为 ftpPath 是 url ftp://testURL/

我需要过滤并获取与源数据相同的记录(比较目标和源数据库)

【问题讨论】:

  • 您到底想要做什么。添加有问题的。
  • 想匹配ftppath和用户名相同的记录
  • oSrcRow 是什么?你有什么错误吗?
  • 是的,但我已经使用了 Uri.EscapeUriString 然后它现在可以工作了。我在下面提供了答案

标签: c# asp.net linq datatable datarow


【解决方案1】:

这就是答案。

我已经转换了如下数据。

    string ftpPath = Uri.EscapeUriString(oSrcRow["ftpPath"].ToString());

这是完整的代码示例。

public DataTable compareFTPTriggers(string targetConnectionString)
    {
        DataTable oFTPTriggerTableDiffs = new DataTable("oFTPTriggerDiffs");
        oFTPTriggerTableDiffs.Columns.Add("oFTPTriggerID");
        oFTPTriggerTableDiffs.Columns.Add("oFTPTriggerName");
        oFTPTriggerTableDiffs.Columns.Add("Comments");

        try
        {
            deFTPTrigger oSrcFTPTrigger = new deFTPTrigger(m_connectString, m_externalUserID);

            DataTable oSrcFTPTrigList = oSrcFTPTrigger.getAllFTPTriggers();

            string systemUserID = clsSettings.systemUserID(targetConnectionString);

            deFTPTrigger oTrgFTPTrigger = new deFTPTrigger(targetConnectionString, systemUserID);

            DataTable oTrgFTPTrigList = oTrgFTPTrigger.getAllFTPTriggers();

            foreach (DataRow oSrcRow in oSrcFTPTrigList.Rows)
            {
                string ftpPath = Uri.EscapeUriString(oSrcRow["ftpPath"].ToString());


                DataRow[] oFilteredRows = oTrgFTPTrigList.Select($"ftpPath= '{ftpPath}' and ftpUserName='{oSrcRow["ftpUserName"]}'");

                string sKey = $"{oSrcRow["ftpPath"]} - {oSrcRow["ftpUserName"]}";

                if (oFilteredRows.Length == 0)
                {
                    oFTPTriggerTableDiffs.Rows.Add(oSrcRow["ftpTriggerID"], sKey, "Addition");
                }
                else
                {
                    if (

                        oSrcRow["ftpPassword"].ToString() != oFilteredRows[0]["ftpPassword"].ToString() ||
                        oSrcRow["waitTime"].ToString() != oFilteredRows[0]["waitTime"].ToString() || oSrcRow["waitType"].ToString() != oFilteredRows[0]["waitType"].ToString() ||
                        oSrcRow["definitionID"].ToString() != oFilteredRows[0]["definitionID"].ToString() || oSrcRow["variableName"].ToString() != oFilteredRows[0]["variableName"].ToString() ||
                        oSrcRow["enabled"].ToString() != oFilteredRows[0]["enabled"].ToString() || oSrcRow["globalName"].ToString() != oFilteredRows[0]["globalName"].ToString()

                       )
                    {
                        oFTPTriggerTableDiffs.Rows.Add(oSrcRow["ftpTriggerID"], sKey, "Properties are different");
                    }
                }
            }

        }
        catch (Exception ex)
        {
           // m_oErrorProvider.writeError(ex.Message);
        }

        DataView dvSorted = oFTPTriggerTableDiffs.DefaultView;
        dvSorted.Sort = "oFTPTriggerName ASC";
        oFTPTriggerTableDiffs = dvSorted.ToTable();

        return (oFTPTriggerTableDiffs);
    }

【讨论】:

    猜你喜欢
    • 2018-02-25
    • 1970-01-01
    • 2018-10-07
    • 2013-11-28
    • 2019-05-09
    • 2014-06-04
    • 2021-11-06
    • 2021-08-22
    • 2012-02-06
    相关资源
    最近更新 更多