字符串比较在DBSet上工作,但在c#中不能在LIST项上工作

本文关键字:工作 不能 LIST 比较 DBSet 字符串 但在 | 更新日期: 2023-09-27 18:02:32

在我们的c#应用程序中,我们需要比较GUID,在数据库中它是大写的,但假设在代码中它是小写的。

我知道我们可以通过字符串来处理这个。比较或字符串。等于,但我想理解下面的场景。

var myInstanceId ='GUID';

下一行做完美比较,

var applicationSettings = db.ApplicationSettingsSet
  .Where(x => x.myInstanceId == myInstanceId).ToList();

可能是由于db。ApplicationSettingsSet是EF数据库实体

  public DbSet<ApplicationSetting> ApplicationSettingSet { get; set; }

但是下面的代码在

不工作
applicationSettingCategory.ApplicationSettings = applicationSettings
  .Where(x =>  x.myInstanceId == myInstanceId );

可能是由于现在比较发生在ApplicationSettings &

这种行为的真正原因是什么?

字符串比较在DBSet上工作,但在c#中不能在LIST项上工作

这个是linq sql:

var applicationSettings = db.ApplicationSettingsSet.Where(x => x.myInstanceId == myInstanceId).ToList();

将compare语句转换为SQL语句,实际的比较在数据库中完成。根据数据库是否区分大小写,它可以改变,所以我假设您的数据库不区分大小写。

这里是指向对象的linq:

applicationSettingCategory.ApplicationSettings = applicationSettings.Where(x =>  x.myInstanceId == myInstanceId );

这里你必须指定比较不区分大小写,就像String.Equals