使用linq检查数据库中是否存在字符串
本文关键字:是否 存在 字符串 数据库 linq 检查 使用 | 更新日期: 2023-09-27 18:02:41
这是我的尝试:
public void ReadLot(LotInformation lot)
{
try
{
using (var db = new DDataContext())
{
var lotNumDb = db.LotInformation.FirstOrDefault(r => r.lot_number.Equals(r.lot_number));
if (lotNumDb.lot_number != null && lotNumDb.lot_number.Length == 0)
{
Console.WriteLine("does not exist. yay");
var lotInfo = db.LotInformation.FirstOrDefault(r => r.lot_number.Equals(lotNumber));
}
else if (lotNumDb.lot_number.ToString().Equals(lot.lot_number))
{
errorWindow.Message = LanguageResources.Resource.Lot_Exists_Already;
dialogService.ShowDialog(LanguageResources.Resource.Error, errorWindow);
}
我想做的是:
当用户上传文件时,我会检查内存中反序列化的字符串在数据库中是否重复。如果是,弹出一个对话框,说它是重复的/已经存在,之后什么都不发生。如果不是重复,请继续应用程序。此外,如果数据库中表中的列为null,则将批号存储在那里,然后继续。
我注意到了一些事情。如果数据库是空的,并且我运行上面的程序,我会得到一个null异常,因为我试图在数据库中找到很多不存在的数字。我该如何更改上面的代码,以便如果我签入db并且列为null,那么只需添加数字,在比较时不引发异常。我认为这可能是目前唯一的问题。
我不确定这应该做什么,但你不需要它:
var lotNumDb =
db.LotInformation.FirstOrDefault(r => r.lot_number.Equals(r.lot_number));
相反,只需检查传递给该方法的lot_number
是否存在,并使用Any
来确定是否存在任何匹配项。如果它返回true
,则批号已在数据库中。
// Check for duplicates
var isDuplicate = db.LotInformation.Any(r => r.lot_number == lot.lot_number);
if (isDuplicate)
{
// Inform user that the lot_number already exists
return;
}
Console.WriteLine("does not exist. yay");
// Store the lot_number in the database
bool lotNumDbExists = db.LotInformation(r => r.lot_number.Equals(r.lot_number)).Any;
或存在
如果存在,则应返回的true或false。