草庐IT

C# LINQ Orderby - 真/假如何影响 orderby?

coder 2023-07-10 原文

我正在研究一些 LINQ 排序,因为我有一个 ID 列表,我需要按顺序对它们进行排序。但是,某些 ID 需要优先于标准顺序。

鉴于此 C# 代码(可以粘贴到 .NET Fiddle 中进行测试),排序按我需要的方式工作,但我不明白为什么 contains 上的 not (!) 运算符是给我正确的顺序?

我预期的排序输出是 (5, 1, 2, 3, 4, 6, 7, 8, 9)。

如果我的排序中有一个 Contains,它不应该为返回 true 的行提供排序优先权吗?相反,它似乎为返回 false 的行提供排序优先级。

using System.Linq;
using System;

public class Program
{
  public static void Main()
  {
    var numbersToFilterBy = new [] {5, 11, 20};

    var x = new [] {new XClass(){Id = 1}, new XClass(){Id = 9}, new XClass(){Id = 5}, new XClass(){Id = 3}, new XClass(){Id = 4}, new XClass(){Id = 2}, new XClass(){Id = 6}, new XClass(){Id = 8}, new XClass(){Id = 7}};

    var trueData = (from data in x
                   orderby !numbersToFilterBy.Contains(data.Id), data.Id
                    select data).ToList();

    foreach(var item in trueData){
        Console.WriteLine(item.Id);
  }
}

public class XClass{
    public int Id{get;set;}
  }
}

发生这种情况的原因是什么?

最佳答案

OrderBy方法将默认按升序对项目进行排序。现在,假设 bool 值的数字表示是:

  • = 0
  • true = 1

false 值自然会排在第一位。如果您想反转顺序,只需使用 descending 关键字:

var trueData = (from data in x
               orderby numbersToFilterBy.Contains(data.Id) descending, data.Id
                select data).ToList();

关于C# LINQ Orderby - 真/假如何影响 orderby?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39093937/

有关C# LINQ Orderby - 真/假如何影响 orderby?的更多相关文章

  1. ruby-on-rails - 在 Rails 3 应用程序中使用 require_dependency 对性能有何影响? - 2

    我觉得我理解require和require_dependency之间的区别(来自Howarerequire,require_dependencyandconstantsreloadingrelatedinRails?)。但是,我想知道如果我使用一些不同的方法(参见http://hemju.com/2010/09/22/rails-3-quicktip-autoload-lib-directory-including-all-subdirectories/和Bestwaytoloadmodule/classfromlibfolderinRails3?)来加载所有文件会发生什么,所以我们:

  2. javascript - AngularJS 1.2 中的随机 orderBy 返回 'infdig' 错误 - 2

    在thisquestion中使用随机orderBy排序技术在AngularJS1.1中工作正常。varmyApp=angular.module('myApp',[]);functionMyCtrl($scope){$scope.list=['a','b','c','d','e','f','g'];$scope.random=function(){return0.5-Math.random();}}但是,在1.2中,它会将infdig错误放入控制台,并且需要更长的时间来返回排序结果:http://jsfiddle.net/mblase75/jVs27/控制台中的错误如下所示:Error:

  3. javascript - Firebase Firestore : orderBy combined with where causes error "Operation was rejected" - 2

    我正在查看FirebaseCloudFirestoredocumentation对于orderBy。当我尝试执行此操作时varfacultyQuery=facultyRef.where("department","==","CoreTeacher").orderBy('bb_last_name','desc');我得到错误:Error:Firestore:Operationwasrejectedbecausethesystemisnotinastaterequiredfortheoperation`sexecution.(firestore/failed-precondition).这

  4. javascript - Firestore 批量写入中的 500 个项目限制有何影响? - 2

    我在云函数中有以下代码,它返回错误信息Error:3INVALID_ARGUMENT:maximum500writesallowedperrequestconsole.log(`${projectId}doClassifySources:Got${_.size(output)}items`)constlastClassification=newDate().toJSON()constbatch=firestore.batch()batch.update(projectRef,{lastClassification})_.forEach(output,item=>{batch.set(p

  5. javascript - 如何结合 Firestore orderBy desc 和 startAfter 游标 - 2

    我正在尝试查询firestore中的列表,该列表应按降序日期属性排序,并使用startAfter游标对结果进行分页。正如您在下面的代码片段中所看到的,一旦我将orderBy('date','desc')与startAfter(lastDoc.date)结合使用,这就会失败。我想知道我做错了什么。有什么想法吗?//thisactuallyworks//butitissortedbyascendingdatesdb.collection('tanks').doc(tankId).collection('documentations').orderBy('date').startAfter(

  6. javascript - AngularJS 中的动态 orderBy - 2

    我有一个对象数组,我想根据下拉菜单中的值动态排序。到目前为止,这是我的列表中的内容:ng-repeat="iteminfilteredItems=(items|filter:searchInput|orderBy:canBeAnything)"但问题是排序可以是对象的属性或使用函数计算的值。它还应该能够以降序方式排序(可选)。我知道我可以为orderBy后面的canByAnything变量使用字符串,传递对象的属性,例如:“-creationDate”//descendingorderingoncreationdate“customer.lastname”//ascendingorde

  7. javascript - AngularJs ng-repeat orderBy 不适用于嵌套对象属性 - 2

    我正在尝试ng-repeat嵌套对象属性并对它们进行排序,但排序对我不起作用。我看过这个:HowtoorderbyinAngularJSusingNestedproperty但是json结构不同,我无法让它工作。Plunker我的代码:{{item.name}}-{{item.order}}范围:$scope.data={"78962":{"id":"78962","name":"item2","type":"blind","order":{"allListPosition":"008","catListPosition":"059"},"data":{"status":"stop",

  8. javascript - Crypto.randomBytes 处理异常对熵不足有何影响? - 2

    在此方法的文档中,它声明如果没有足够的熵来生成数据,它将抛出异常。我的问题与熵有关。它是如何生成的,您能否通过提供足够的熵来防止抛出异常?抛出异常的频率有多高,还是未知?crypto.randomBytes的文档:crypto.randomBytes(size,[callback])//asynccrypto.randomBytes(256,function(ex,buf){if(ex)throwex;console.log('Have%dbytesofrandomdata:%s',buf.length,buf);});Generatescryptographicallystrongp

  9. javascript - YouTube API 'orderby=duration' 不处理整个播放列表,只处理最新的视频 - 2

    我正在尝试构建一个小的JavaScript程序来查询YouTubeAPI对于给定的播放列表,按持续时间排序。否则一切都完美无缺,但排序并不代表整个播放列表,只是其中的25个最新视频!这是最低限度的完整工作exampleasaJSFiddle这是其中的JavaScript部分:varplaylistId="UUAuUUnT6oDeKwE6v1NGQxug";jQuery.getJSON("https://gdata.youtube.com/feeds/api/playlists/"+playlistId+"?v=2&orderby=duration&alt=json",function(

  10. javascript - 编辑 orderby-property 时 AngularJS orderby 不起作用 - 2

    我在我的范围内有一个对象列表,我想遍历它们,以按某些属性排序的方式显示它们的一些属性并更改它们。ng-repeat用于显示绑定(bind)到列表中每个对象的文本框,并应用以“position”作为参数的orderby过滤器。再一次,位置也是可编辑的!现在我们改变某个对象的位置一次(angular按预期对列表重新排序)然后改变两次。Angular不会重新排序列表。谁能解释一下如何解决这种只重新订购一次的情况以及这种行为的原因是什么?这是fiddle:JSFiddleHTMLListofactivities:{{activity.name}}JSvarmyApp=angular.modul

随机推荐