对varchar字段的linq查询不返回任何结果

时间:2012-12-19 10:52:00

标签: c# linq visual-studio linqpad

当我在 linqpad 中运行此查询时:

Customer.Where(c => (c.CustomerName == "test"))

返回匹配的记录。

当我尝试在 visual studio 中运行相同的查询时,它不会返回任何匹配的记录。这是我正在使用的代码:

    List<Customer> customerList = new List<Customer>();

    using (DBEntities db = new DBEntities())
    {
        try
        {
            customerList = db.Customer.Where(c => (c.customerName == "test")).ToList();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

    return customerList;

任何人都可以看到为什么它在 linqpad 中有效,但在 visual studio 中不起作用?

2 个答案:

答案 0 :(得分:2)

你能尝试这样的

吗?
customerList = db.Customer.
   Where(c => String.Compare (c.customerName.ToUpper(),"test".ToUpper()) == 0).ToList();

因为Casesensitive搜索客户名称可能存在问题。

根据您的需要尝试其他变体:String.Compare Method

答案 1 :(得分:0)

你的linqpad查询使用“c.CustomerName”,你的visual studio查询使用“c.customerName”。

或者,您的问题可能是区分大小写,或者db.Customer集是空的。

编辑: DeeMac在回复中也提到了这一点