foreach linq2sql字符串问题

时间:2011-09-22 23:05:34

标签: c# mysql

大家好,当我想在我的数据库中匹配字母O时,我得到字符串格式错误。我现在尝试了一些东西并且googles很多但仍然无法解决此错误

const string st1 = ("O");
var docketcheck = from q in db.Dockets
                  where q.DocketNum == txtDisplay.Text && q.Status.Equals(st1)
                  select q;

foreach (Docket d in docketcheck)
{
  if (d.EngName.Equals("NULL"))
  {
    isEngNameNull = true;
    break;
  }
}

if (isEngNameNull)
{
  txtDisplay.Clear();
  txtDisplay.ReadOnly = false;
  var engs = new EngStart();
  engs.ShowDialog(this);
}
else
{
  var sub = new machinesel();
  txtDisplay.Clear();
  sub.ShowDialog(this);
}

检查我的mssql数据库是否包含上述代码中的字母O的正确方法是什么

由于

2 个答案:

答案 0 :(得分:0)

如果q.Status是一个字符串类型的列,那么你的方式很好。 如果你感兴趣,这是lambda的方法。

db.Dockets.Where(q => q.DocketNum == txtDisplay && q.Status == "O")

答案 1 :(得分:0)

你的代码看起来很好,当我在我的机器上测试了一个等效的查询时,它没有问题。

你可以稍微整理你的代码,这样它只会拉回匹配记录的数量,如下所示:

const string st1 = "O";

var docketcheck =
    from q in db.Dockets
    where q.DocketNum == txtDisplay.Text
    where q.Status == st1
    where d.EngName == "NULL"
    select q;

if (docketcheck.Any())
{
    txtDisplay.Clear();
    txtDisplay.ReadOnly = false;
    var engs = new EngStart();
    engs.ShowDialog(this);
}
else
{
    var sub = new machinesel();
    txtDisplay.Clear();
    sub.ShowDialog(this);
}

我希望这会有所帮助。