如何加速C#/ Linq查询?[我不需要获取数据,我需要得到条件]

Dec*_*rio 3 .net c# linq linq-to-entities entity-framework

    public int being = 0;
    public void Insert(Currency current, int number)
    {
        being = db.Currency.Where(x => x.ForDate == current.ForDate)
            .Where(x => x.TitleId == current.TitleId)
            .Where(x => x.Value == current.Value).Count(x=>x.Id > 0);
        if (being == 0)
        {
            db.Currency.AddOrUpdate(current);
        }
   }
Run Code Online (Sandbox Code Playgroud)

这是我的代码工作如此缓慢,因为获得约会但没有必要,我不知道其他方式.也许是这样的:

db.Currency.Find().Value.Equals(current.Value).where...where...
Run Code Online (Sandbox Code Playgroud)

Pat*_*man 8

我认为你的主要问题是.Count(x => x.Id > 0),它强制评估所有条件,然后实际得到总数.

如果可以,请将其替换为Any.这样,它最多只需要一行:

bool isBeing = db.Currency
               .Where(x => x.ForDate == current.ForDate
                           && x.TitleId == current.TitleId
                           && x.Value == current.Value
                           && x.Id > 0
                     )
               .Any();
Run Code Online (Sandbox Code Playgroud)