首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较无法比较C#

比较无法比较C#
EN

Stack Overflow用户
提问于 2014-08-04 13:19:32
回答 3查看 87关注 0票数 0

我有一个问题,从用户输入的值与数据库进行比较。

这是可变的

代码语言:javascript
复制
List <string> onewayorigin = new List<string>();
List <string> onewaydestination = new List<string>();      
List <string> onewayterminal = new List<string>();
List <string> onewaydeparture = new List<string>();

这是我与数据库的连接,以获取值。

代码语言:javascript
复制
string strSelect;
SqlCommand cmdSelect;
SqlDataReader dtr;


SqlConnection conCust;
string connStr = ConfigurationManager.ConnectionStrings["BusConnectionString"].ConnectionString;
conCust = new SqlConnection(connStr);

strSelect = "Select * From Route";

cmdSelect = new SqlCommand(strSelect, conCust);

conCust.Open();
dtr = cmdSelect.ExecuteReader();

while (dtr.Read())
{
    onewayorigin.Add(dtr["OneWayOrigin"].ToString());
    onewaydestination.Add(dtr["OneWayDestination"].ToString());            
    onewayterminal.Add(dtr["OneWayTerminal"].ToString());   
    onewaydeparture.Add(dtr["OneWayDepartureTime"].ToString());            
}

string[] origin = onewayorigin.ToArray();
string[] destination = onewaydestination.ToArray();
string[] ow_terminal = onewayterminal.ToArray();
string[] ow_depart = onewaydeparture.ToArray();

我在这里做个比较。

代码语言:javascript
复制
if (ow_terminal.Equals(ddlterminal.SelectedValue) && ow_depart.Equals(ddlDeparture.SelectedValue))
{
    if (origin.Equals(ddlOrigin.SelectedValue) && destination.Equals(ddlDestination.SelectedValue))
    {  
        lblMessage.Text = "Record exist";
    }                
}
else
{
    lblMessage.Text = "No record exist";
}

是的,我承认我是新来的。

EN

回答 3

Stack Overflow用户

发布于 2014-08-04 13:30:34

问题是您正在比较数组和字符串。因此,这将始终为您提供false

请改用Contains。如下图所示:

代码语言:javascript
复制
if (ow_terminal.Contains(ddlterminal.SelectedValue) && ow_depart.Contains(ddlDeparture.SelectedValue))
{

    if (origin.Contains(ddlOrigin.SelectedValue) && destination.Contains(ddlDestination.SelectedValue))
    {

        lblMessage.Text = "Record exist";
    }
}
else
{
    lblMessage.Text = "No record exist";
}
票数 1
EN

Stack Overflow用户

发布于 2014-08-04 13:32:00

您的比较失败,因为您正在比较一个完整的数组,只有一个值:

代码语言:javascript
复制
ow_terminal.Equals(ddlterminal.SelectedValue)
  ^ this is an array                 ^ this is properly a string

要解决此问题,您需要遍历数组以确保元素(数组中)与ddlterminal.SelectedValue中的值匹配

示例:

代码语言:javascript
复制
foreach(string terminal in ow_terminal)
{ 
  if(terminal == ddlterminal.SelectedValue)
  { 
    ...

但是,使用Contains方法可以更容易地完成此操作:

代码语言:javascript
复制
if(ow_terminal.Contains(ddlterminal.SelectedValue) && ...)
票数 1
EN

Stack Overflow用户

发布于 2014-08-04 16:52:53

一旦你添加到列表中,你就需要给这些项目建立索引。因此,在进行比较时,应考虑项目索引,以便比较相应的值。您可以使用ArrayList类

代码语言:javascript
复制
ArrayList  onewayorigin = new ArrayList() ;
ArrayList  onewaydestination = new  ArrayList() ; 
ArrayList  onewayterminal = new ArrayList() ;
ArrayList  onewaydeparture = new ArrayList() ;
string strSelect;
SqlCommand cmdSelect;
SqlDataReader dtr;

SqlConnection conCust;
string connStr = ConfigurationManager.ConnectionStrings["BusConnectionString"].ConnectionString;
conCust = new SqlConnection(connStr);

strSelect = "Select * From Route";
cmdSelect = new SqlCommand(strSelect, conCust);
conCust.Open();
dtr = cmdSelect.ExecuteReader();

while (dtr.Read())
{
    i = 0;
    onewayorigin.Insert(i, dtr["OneWayOrigin"].ToString());
    onewaydestination.Insert(i, dtr["OneWayDestination"].ToString());            
    onewayterminal.Insert(i, dtr["OneWayTerminal"].ToString());   
    onewaydeparture.Insert(i, dtr["OneWayDepartureTime"].ToString());   
    i++         
}

//to compare
for (int iIndex = 0; iIndex < arr.Count; iIndex++)
{
    object o = arr[iIndex];
    if (ow_terminal[iIndex].ToString().Contains(ddlterminal.SelectedValue) &&    ow_depart[iIndex].ToString().Contains(ddlDeparture.SelectedValue))
    {

        if (onewayorigin[iIndex].ToString().Contains(ddlOrigin.SelectedValue) && destination[iIndex].ToString().Contains(ddlDestination.SelectedValue))
        {

            lblMessage.Text = "Record exist";
            return;
        }
        else
        {
            lblMessage.Text = "No record exist";
        }
    }
    else
    {
        lblMessage.Text = "No record exist";
    }
}

如果这有帮助,请标记为有帮助..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25112179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档