相关疑难解决方法(0)

Linq to Objects:GroupBy是否保留元素的顺序?

从LINQ到Objects的Enumerable.GroupBy是否保留组中元素的顺序?

.net linq group-by

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

如何将行号投射到Linq查询结果中

如何将行号投影到linq查询结果集上.

而不是说:

field1,field2,field3

field1,field2,field3

我想要:

1,field1,field2,field3

2,field1,field2,field3

以下是我对此的尝试:

public List<ScoreWithRank> GetHighScoresWithRank(string gameId, int count)
{
    Guid guid = new Guid(gameId);
    using (PPGEntities entities = new PPGEntities())
    {
        int i = 1;
        var query = from s in entities.Scores
                    where s.Game.Id == guid
                    orderby s.PlayerScore descending
                    select new ScoreWithRank()
                    {
                        Rank=i++,
                        PlayerName = s.PlayerName,
                        PlayerScore = s.PlayerScore
                    };
        return query.ToList<ScoreWithRank>();
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,"Rank = i ++"行引发了以下编译时异常:

"表达式树可能不包含赋值运算符"

linq row-number

34
推荐指数
1
解决办法
4万
查看次数

如何将ROW_NUMBER添加到LINQ查询或实体?

我被这个简单的数据问题困扰了.

我正在使用Entity框架并拥有一个产品数据库.我的结果页面返回这些产品的分页列表.现在我的结果按每个产品的销售数量排序,所以我的代码如下所示:

return Products.OrderByDescending(u => u.Sales.Count());
Run Code Online (Sandbox Code Playgroud)

这将返回我的实体的IQueryable数据集,按销售数量排序.

我希望我的结果页面显示每个产品的排名(在数据集中).我的结果应如下所示:

Page #1
1. Bananas
2. Apples
3. Coffee

Page #2
4. Cookies
5. Ice Cream
6. Lettuce
Run Code Online (Sandbox Code Playgroud)

我希望我只想在结果中使用SQL ROW_NUMBER变量添加一列...但我不知道如何将此列添加到我的结果数据表中.

我的结果页面确实包含一个foreach循环,但由于我使用的是分页集,我猜测使用该数字来伪造排名数字不是最好的方法.

所以我的问题是,在这种情况下,如何在查询结果中添加ROW_NUMBER列?

linq asp.net entity-framework

23
推荐指数
2
解决办法
3万
查看次数

如何检查ObjectQuery <T>表达式树中是否存在OrderBy

我正在使用T4为LINQ to Entities实体生成存储库.

存储库包含(除其他外)适合于分页的List方法.支持和不支持的方法的文档没有提到它,但是你不能Skip在无序上"调用" IQueryable.它会引发以下异常:

System.NotSupportedException:方法'Skip'仅支持LINQ to Entities中的排序输入.必须在方法'Skip'之前调用'OrderBy'方法.

我通过允许通过部分方法定义默认排序来解决它.但是我在检查表达式树是否确实包含一个问题时遇到了问题OrderBy.

我已将问题减少到尽可能少的代码:

public partial class Repository
{
    partial void ProvideDefaultSorting(ref IQueryable<Category> currentQuery);

    public IQueryable<Category> List(int startIndex, int count)
    {
        IQueryable<Category> query = List();
        ProvideDefaultSorting(ref query);
        if (!IsSorted(query))
        {
            query = query.OrderBy(c => c.CategoryID);
        }
        return query.Skip(startIndex).Take(count);
    }
    public IQueryable<Category> List(string sortExpression, int startIndex, int count)
    {
           return List(sortExpression).Skip(startIndex).Take(count);
    }
    public IQueryable<Category> List(string sortExpression)
    {
        return AddSortingToTheExpressionTree(List(), sortExpression);
    }
    public IQueryable<Category> List()
    {
           NorthwindEntities ent = …
Run Code Online (Sandbox Code Playgroud)

c# linq generics linq-to-entities code-generation

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

使用LINQ排序不同的值

可能重复:
如何使用LINQ从DataTable获取不同的,有序的名称列表?

这是我的第一个问题.我从数据库中获取了一个下拉列表的不同值列表,如下所示:

var plocQ = (from m in db.SERVICE_NRS
             orderby m.PLOC
             select new { PlocID = m.PLOC, value = m.PLOC }).Distinct();
Run Code Online (Sandbox Code Playgroud)

排序似乎没有效果,我必须这样做:

var plocQ = (from m in db.SERVICE_NRS
             select new { PlocID = m.PLOC, value = m.PLOC }).Distinct();

plocQ = from s in plocQ
        orderby s.PlocID
        select s;
Run Code Online (Sandbox Code Playgroud)

我想知道这是否与LINQ或数据库有关?我对LINQ有点新,之前写过太多的SQL.有任何想法吗?

c# linq sorting

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

LinqToSql中的子查询是否保证与其父级的顺序相同?

假设我有一个带有DateTime字段和int字段的表,并执行如下查询:

var query = context.tblSomeTable.Where(s=>s.Name == "Hello World").OrderBy(s=>s.SignUpDate);
Run Code Online (Sandbox Code Playgroud)

如果我随后用结果执行两个子查询,它们是否仍按日期排序?:

var sub1 = query.Where(s=>s.Id = 5);
var sub2 = query.Where(s=>s.Id = 8);
Run Code Online (Sandbox Code Playgroud)

我的直觉说它们仍处于有序状态,但是如果原始查询已被迭代/执行了,这是否重要?

.net c# linq linq-to-sql

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