linq to sql if control

Posted

技术标签:

【中文标题】linq to sql if control【英文标题】: 【发布时间】:2021-02-05 09:11:19 【问题描述】:

我想在 linq 查询中进行 if 控制,但我不知道如何进行此控制。

var result = from sk in stokKartlari
                     join ue in uretimEmirleri on sk.id equals ue.UrunId
                     join ub in urunBarkodlari on ue.Id equals ub.UretimEmriId
                     select new UretimEmriJsonViewModel
                     
                         Id = ue.Id,
                         BaslangicTarihi = string.Format("0:yyyy-MM-dd", ue.BaslangicTarih),
                         BitisTarihi = string.Format("0:yyyy-MM-dd", ue.BitisTarih),
                         StokAdi = sk.stokadi,
                         StokKartiId = ue.UrunId,
                         UretimAdet = ue.Adet,
                         UretimBasTarih = string.Format("0:yyyy-MM-dd", ue.UretimBasTarih),
                         UretimBitTarih = string.Format("0:yyyy-MM-dd", ue.UretimTamamTarih),
                         UretimSeriNo = ue.UEmirBarkod,
                         Res= //true or false
                     ;

我尝试 if urunBarkodlari.Where(x=>x.Printed==true && x.UId==ue.Id).Count() count > 0 Res= true or false

我正在做我想做的事,方法是用 foreach 返回列表并发送查询。我可以在不发送查询的情况下通过 linq 执行此操作吗?

【问题讨论】:

【参考方案1】:

urunBarkodlari.Any(x => x.Printed== true && x.UId==ue.Id).Count() > 0

你不需要“?真:假” 如果有任何记录,将返回 true。

您可以查看此帖子: https://***.com/questions/3703256/linq-extension-methods-any-vs-where-vs-exists#:~:text=Any()%20returns%20true%20if,the%20IList%20back%20before%20Linq.

【讨论】:

【参考方案2】:

我解决了我的问题;

Res = urunBarkodlari.Any(x => x.Printed== true && x.UId==ue.Id).Count() > 0

【讨论】:

不是更准确,但更短一点:Res= urunBarkodlari.Any(x => x.Printed && x.UId==ue.Id)

以上是关于linq to sql if control的主要内容,如果未能解决你的问题,请参考以下文章

如何将相同的 var 类型变量分配给不同的 linq to sql 结果集?

LINQ to SQL class LINQ to sql Objects?

LINQ to SQL / LINQ to Collections 性能

Linq-to-SQL 数据检索速度比较

Linq-to-SQL 和 DateTime 的怪异

如何改进 Linq-To-Sql 代码