Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C-使用字符串拆分器查询多个逗号分隔值搜索参数_C#_Multithreading_Delimited Text_Query Parameters - Fatal编程技术网

C# C-使用字符串拆分器查询多个逗号分隔值搜索参数

C# C-使用字符串拆分器查询多个逗号分隔值搜索参数,c#,multithreading,delimited-text,query-parameters,C#,Multithreading,Delimited Text,Query Parameters,要求:我有一个用C编写的windows应用程序,目前只能按1个公司值搜索.CSV文件,例如:按公司搜索:160,我希望它搜索多个公司值,用逗号分隔,例如:按公司搜索:160、220、310、550、610 问题:如何搜索用逗号分隔的多个公司值?? 例如:按公司搜索:160220310550610。 字符串必须由逗号值分割,每个字符串的值必须设置为变量x+1,例如:Corp1、Corp2、Corp3。如果有x个逗号,例如:Corp1、Corp2、Corp3有2个逗号,则必须定义3个变量,然后为每个

要求:我有一个用C编写的windows应用程序,目前只能按1个公司值搜索.CSV文件,例如:按公司搜索:160,我希望它搜索多个公司值,用逗号分隔,例如:按公司搜索:160、220、310、550、610

问题:如何搜索用逗号分隔的多个公司值?? 例如:按公司搜索:160220310550610。 字符串必须由逗号值分割,每个字符串的值必须设置为变量x+1,例如:Corp1、Corp2、Corp3。如果有x个逗号,例如:Corp1、Corp2、Corp3有2个逗号,则必须定义3个变量,然后为每个corp值循环搜索x+1次

以下是定义公司价值的MainForm.cs代码中的相关代码:

    private SearchCriteria GetSearchCriteria()
    {

        // Initialize Search Parameters object
        SearchCriteria sc = new SearchCriteria(textBoxCorp.Text,
                                               textBoxOrderNumber.Text,
                                               textBoxCampaign.Text,
                                               textBoxCity.Text,
                                               comboBoxState.Text,
                                               textBoxZip.Text,
                                               folderBrowserDialog1.SelectedPath,
                                               folderBrowserDialog2.SelectedPath,
                                               radioButtonAny.Checked,
                                               radioButtonAll.Checked);

        return sc;
    }

    private void textBoxCorp_TextChanged(object sender, EventArgs e) { }
以下是SearchProcess.cs中的相关代码,其中引入了公司价值并检查其是否与搜索匹配:

    // Function runs in worker thread and emulates long process.
    public void Run()
    {
        m_sc = (SearchCriteria)m_form.Invoke(m_form.m_DelegateGetSearchCriteria);
        // Display parameters
        m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on Corp: " + m_sc.get_Corp() });
        m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on OrderNumber: " + m_sc.get_OrderNumber() });
        m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on Campaign: " + m_sc.get_Campaign() });
        m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on City: " + m_sc.get_City() });
        m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on State: " + m_sc.get_State() });
        m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on Zip: " + m_sc.get_Zip() });
        m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on Source Path: " + m_sc.get_SourcePath() });
        m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search on Target Path: " + m_sc.get_TargetPath() });
        if (m_sc.get_SearchAND()==true)
        {
            m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search for All" });
        }
        else
        {
            m_form.Invoke(m_form.m_DelegateAddString, new Object[] { "Search for Any" });
        }

            // Found should be true if ANY of the criteria are met. 
            // This is an OR logic gate
            // If any of the given fields do match then it is a true
            if (m_sc.get_SearchOR().Equals(true))
            {
                // Check for the Corp type match
                if (m_sc.get_Corp() != "" && String.Compare(AgentID, m_sc.get_Corp()) == 0)
                {
                    found = true;
                }
        }

            // Copy the file if ANY of the search criteria have been met
            if (found)
            {

                m_form.Invoke(m_form.m_DelegateAddString, new Object[] {"FOUND: Order_No: " + Order_No +
                                                                        " barcode: " + barcode +
                                                                        " MailerCode: " + MailerCode +
                                                                        " AgentID: " + AgentID +
                                                                        " City: " + City +
                                                                        " State: " + State +
                                                                        " ZIP: " + ZIP});
                //passes values to TransferFile 
                TransferFile(directory, barcode, AgentID, ZIP);
            }
        } // end for that finds each matching record 

任何帮助都将不胜感激!谢谢

不完全确定您在做什么,您搜索的数据源在哪里,所以只能猜测:

string sCorpFilter = m_sc.get_Corp();
IEnumerable<string> corps = null;

if (! string.IsNullOrEmpty(sCorpFilter))
{
  corps = sCorpFilter.Split(",".ToCharArray(),
   StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim());
}
[...]
if (corps != null && corps.Contains(AgentID))
{
  found = true;
}

谢谢你的回复!数据源是一个csv文件,其名称中没有在evaluateCSVfile方法中调用的总计-如果!f、 容器评估文件,f;DataTable table=CSVReader.ReadCSVFilequalifiedFileName,true。[…]部分中缺少什么代码?如果有x个逗号,则如何将每个字符串的值设置为x+1变量,例如:Corp1、Corp2、Corp3。例如:Corp1、Copr2、Corp3有2个逗号,因此必须定义3个变量,然后为每个x+1的corp值释放saerch x+1次。@Brian:您可以取消[…]部分,这只是为了表明,出于可读性和可重用性的原因,您应该在方法开头的某个地方初始化/清理过滤器数据。关于第二点,假设用户可以输入0到X,你不会创建任意数量的变量,每个变量代表一个公司,不是吗?一个可变长度的字符串列表意味着,它的长度可以从0变化到理论上的无穷大最适合这里。有人能回答这个问题吗??