C# 将数据库中的字符串与发布的字符串进行比较

C# 将数据库中的字符串与发布的字符串进行比较,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我有一个数据库,我希望它的一部分(名称)不被复制。我试图检查它是否存在,如果存在,则不保存此部分,但不管它是否已经存在,它都在保存 代码: var reviewSubject = from c in db.Subject select c.SubjectName.ToString().ToLower(); var match = reviewSubject.FirstOrDefaultAsync(stringToCheck => stringToCheck.Equals(model.s

我有一个数据库,我希望它的一部分(名称)不被复制。我试图检查它是否存在,如果存在,则不保存此部分,但不管它是否已经存在,它都在保存

代码:

var reviewSubject = from c in db.Subject select 

c.SubjectName.ToString().ToLower();
var match = reviewSubject.FirstOrDefaultAsync(stringToCheck => stringToCheck.Equals(model.sub.SubjectName.ToLower()));
model.rev.Created = DateTime.Now;
if (ModelState.IsValid)
{
    if ((model.sub.SubjectName.ToLower()).Equals(match))
    {
        //Do nothing 
    }
    else
    {
        model.sub.GBU = model.rev.GBU;
        db.Subject.Add(model.sub);
    }
}
您没有在返回任务的
reviewSubject.FirstOrDefaultAsync
的结果上使用关键字。因此,您正在检查任务是否等于字符串,该字符串为false

正确的用法是:

var match = await reviewSubject.FirstOrDefaultAsync(stringToCheck => stringToCheck.Equals(model.sub.SubjectName.ToLower()));`
如果不想使用该方法,可以使用同步方法:

var match = reviewSubject.FirstOrDefault(stringToCheck => stringToCheck.Equals(model.sub.SubjectName.ToLower()));`

SubjectName attrbuite的数据类型是什么?只是一个字符串(公共字符串SubjectName,[SubjectName]NVARCHAR(MAX)NOT NULL),更易于使用
bool match=reviewSubject.Any(x=>x==model.SubjectName.ToLower())
然后
if(match){…}else{…}