如何在Linq中编写嵌套的Sql查询

时间:2018-05-03 17:59:29

标签: c# entity-framework linq lambda orm

所以我在sql中有这个查询:

UnityWebRequest

我想在linq表达式或lambda表达式中编写相同的查询。

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

最后我设法在linq中提出查询,不知道如何在lambda中做到这一点,但它运行正常。

 var obj = (from emisor in _context.DbSetEmisores
                       where emisor.EmisorCuenta == cuenta
                       select new EmisorDto
                       {
                           Segmento =
                           ((from itemConf in _context.ItemsDeConfiguracion
                             where itemConf.ConfigID == "SEGM" && itemConf.ConfigItemID == emisor.SegmentoId
                             select new { itemConf.ConfigItemDescripcion }).FirstOrDefault().ConfigItemDescripcion),
                           Marca =
                           ((from itemConf in _context.ItemsDeConfiguracion
                             where itemConf.ConfigID == "MRCA" && itemConf.ConfigItemID == emisor.MarcaId
                             select new { itemConf.ConfigItemDescripcion }).FirstOrDefault().ConfigItemDescripcion),
                           Producto = emisor.Producto,
                           Familia = emisor.Familia,
                           SegmentoId = emisor.SegmentoId,
                           MarcaId = emisor.MarcaId,
                       }).FirstOrDefault();

答案 1 :(得分:1)

使用LINQ时,您可以使用任何一种查询语法,如下面的LINQ所示(如果您熟悉SQL,那么这看起来更自然)。

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/query-syntax-and-method-syntax-in-linq

另一种选择是使用Method语法,下面是一个简短的例子。这允许链接方法,要记住的最大的事情是应该使用“var”,返回类型是动态的,如果你只使用“var”,编译器会帮助你很多

var items = _list.Where(x => x.Attribute1 ==“NextField”)                 .Where(x => x.Attribute2 ==“Something”);

有时会让人们感到困惑的其他事情是LINQ使用“延迟执行”