标签: linq-query-syntax

将此Linq查询从查询​​语法转换为lambda表达式

我不确定我喜欢linq查询语法......这不是我的偏好.但我不知道这个查询使用lambda表达式会是什么样的,有人可以帮忙吗?

from securityRoles in user.SecurityRoles
from permissions in securityRoles.Permissions
where permissions.SecurableEntity.Name == "Unit" && permissions.PermissionType.Name == "Read"
orderby permissions.PermissionLevel.Value descending
select permissions
Run Code Online (Sandbox Code Playgroud)

用户和安全角色之间存在多对多关系,这使得这种混乱更加令人困惑.

谢谢!黄绿色

linq lambda linq-query-syntax

2
推荐指数
1
解决办法
552
查看次数

使用linq按组对C#对象进行排序

我有按特定属性分组的对象列表。我需要根据其他属性对该列表进行排序,但始终需要保留分组。因此,例如,如果列表类似于:

{ id=1, partNumber = 100 }
{ id=2, partNumber = 500 }
{ id=2, partNumber = 300 }
{ id=2, partNumber = 600 }
{ id=3, partNumber = 550 }
{ id=3, partNumber = 990 }
{ id=4, partNumber = 200 }
{ id=5, partNumber = 300 }
Run Code Online (Sandbox Code Playgroud)

那么按零件号升序排序后的结果将是:

{ id=1, partNumber = 100 }
{ id=4, partNumber = 200 }
{ id=5, partNumber = 300 }
{ id=2, partNumber = 400 }
{ id=2, partNumber = 500 } …
Run Code Online (Sandbox Code Playgroud)

c# linq group-by sql-order-by linq-query-syntax

2
推荐指数
1
解决办法
2560
查看次数

LINQ OrderBy的异常

我还是LINQ的新手,我创建了一个我觉得有点笨拙的查询.我想知道是否有任何方法可以简化它?

我的查询如下:

var agreementsMatching = _ctx.LeasingAgreements
    .Where(x => x.Dealer.Id == dealer.dealerId)
    .ToList();
var ag = agreementsMatching
    .OrderBy(o => o.Model.Specification)
    .OrderBy(o => o.Model.ModelName)
    .OrderBy(o => o.Model.ModelBrand)
    .OrderBy(c => c.LeasingAgreementClicks)
    .GroupBy(sg => sg.Model.Specification)
    .Select(sg => new { GroupId = sg.Key, Agreements = sg });
Run Code Online (Sandbox Code Playgroud)

我认为它可能不是最好的查询的原因还在于它给了我一个例外:

至少有一个对象必须实现IComparable.

我知道它发生是因为一个或多个对象没有实现IComparable接口.我只是不确定如何实际处理它.

任何帮助/提示都非常感谢这一个!

编辑:事实证明我不需要所有这些OrderBy电话.我可以这样做:

var agreementsMatching = _ctx.LeasingAgreements
    .Where(x => x.Dealer.Id == dealer.dealerId)
    .ToList();
var ag = agreementsMatching
    .GroupBy(sg => sg.Model.Specification)
    .Select(sg => new { GroupId = sg.Key, Agreements = sg });
Run Code Online (Sandbox Code Playgroud)

虽然问题现在解决了,但我还是想学习如何避免上述错误:)

c# linq linq-to-objects linq-query-syntax

2
推荐指数
1
解决办法
4151
查看次数

LINQ查询语法具有多个语句

可以使用LINQ的查询语法重写此方法吗?

public IEnumerable<Item> GetAllItems()
{
    return Tabs.SelectMany(tab =>
        {
            tab.Pick();
            return tab.Items;
        });
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚tab.Pick()方法调用的位置.

c# linq linq-query-syntax

2
推荐指数
1
解决办法
686
查看次数

检查任何数据库表是否有任何行

我试图了解如何使用实体框架检查数据库中的任何表是否有数据。我可以检查一张表,但如何一次检查所有表?我们有 ef6 的选择吗?

using (var db = new CreateDbContext())
{
    if(!db.FirstTable.Any())
    {
        // The table is empty
    }
}
Run Code Online (Sandbox Code Playgroud)

任何有关如何循环实体的指针都会有所帮助。

sql-server entity-framework linq-query-syntax

1
推荐指数
1
解决办法
572
查看次数

LINQ"查询语法"是否支持Duck打字?

关于LINQ查询语法...

var foo = new List<int> { 1, 2 };

var boo = from n in foo
            where n > 1
            select n;
Run Code Online (Sandbox Code Playgroud)

...我一直认为这种语法仅限于在IEnumerable上运行.或者至少在我了解IQueryable之前.也许IObservable也是如此.但我最近注意到一个建议,即查询语法基于duck typing.这个故事看起来并不十分令人信服,直到我发现一个专门用于LINQ to Tasks的网站.LINQ to Tasks看起来完全依赖于使用查询语法的duck typing!

好的,这里发生了什么?查询语法是否使用duck typing?当我自己尝试一下时,确实这有效并且似乎证明了所有关于鸭子打字,而不是IEnumerable:

public class Joker<T>
{
    public T Item;

    public Joker(T item)
    {
        Item = item;
    }
}

public static class JokerHelp
{

    public static T2 Select<T,T2>(this Joker<T> joke, Func<T,T2> call)
    {
        return call(joke.Item);
    }
}

var oof = new Joker<int>(5);
int …
Run Code Online (Sandbox Code Playgroud)

.net c# linq duck-typing linq-query-syntax

0
推荐指数
1
解决办法
396
查看次数

使用Linq获取Top x产品

我需要使用Linq to Entities获得前10名记录.

我需要将返回的结果绑定到GridView如下"

Product Name  |   Product Description  |   Number of Items Sold

Item 1        |   Item 1 Description   |           24
Run Code Online (Sandbox Code Playgroud)

如上所述,物品需要按顺序存储,从销售的大多数商品开始.

我试了几个例子,比如这个,这个,跟着例子在这里.

以下是我到目前为止所尝试的内容:

public IQueryable GetTopTenProducts(DateTime startDate, DateTime endDate)
{
    return
        (from p in this.Entities.Product
         join pro in this.Entities.ProductOrder on p.ID equals pro.ProductID
         join o in this.Entities.Order on pro.OrderID equals o.ID
         where o.DateOfOrder >= startDate && o.DateOfOrder <= endDate
         select new
         {
             Product = p,
             Quantity = pro.Qty,
             ProductName = …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-entities linq-query-syntax

0
推荐指数
1
解决办法
336
查看次数

当变量为空或为空时全选,否则选择过滤的值

我的 linq 查询总结如下 -

       string CustomerID;// can be "ALL" or any value

        var itemlist = ( from itmhstry in context.ItemHistories
               join itm in context.Items on itmhstry.ItemID equals itm.ItemID into itm_join
               where itmhstry.CustomerID == CustomerID
.......................)
Run Code Online (Sandbox Code Playgroud)

然后查询继续选择所需的值

这里如何在CustomerID值为 ALL/NULL时选择所有值(如 select * >> without filter) 。?如何为此目的构建 where 子句?

我可以用 if else 重写相同的查询,以便有两个不同的查询来处理这个问题,但有没有更简单的方法呢?

c# sql linq linq-query-syntax

0
推荐指数
1
解决办法
1995
查看次数

具有第一个或默认连接的Linq查询

我有以下数据模型:

public class Course
{
    public int CourseId { get; set; }
    public int StateId { get; set; }
}

public class CompletedCourse
{
    public int CompletedCourseId { get; set; }
    public int UserId { get; set; }
    public Course Course { get; set; }
    public string LicenseNumber { get; set; }
}

public class License
{
    public int LicenseId { get; set; }
    public int UserId { get; set; }
    public int StateId { get; set; }
    public string …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework linq-query-syntax

0
推荐指数
1
解决办法
5197
查看次数