Tag: linq

LINQ + Foreach vs Foreach + If

我需要迭代对象列表,只对布尔属性设置为true的对象执行某些操作。 我在这个代码之间辩论 foreach (RouteParameter parameter in parameters.Where(p => p.Condition)) { //do something } 和这个代码 foreach (RouteParameter parameter in parameters) { if !parameter.Condition continue; //do something } 第一个代码显然更清晰,但我怀疑它会遍历列表两次 – 一次是查询,一次是foreach。 这不会是一个巨大的名单,所以我不是过度关心性能,但循环两次的想法只是错误的我。 问:有没有干净/漂亮的方式来写这个没有循环两次?

查询的结果不能被枚举多次

我正在使用entity framework(EEF),并得到以下错误: “查询的结果不能一次枚举”。 我有一个包含ef数据上下文的存储库类。 然后我有一个控制器类(不要与MVC控制器混淆),其中包含存储库的一个实例。 到目前为止这么好…我有一个控制器上的search方法应该返回一个RadComboBoxItemData数组,用于填充Telerik RadComboBox控件。 public RadComboBoxItemData[] Search(int id, string searchText) { var query = context.Search(id, searchText); List<RadComboBoxItemData> result = new List<RadComboBoxItemData>(); foreach (var item in query) { RadComboBoxItemData itemData = new RadComboBoxItemData(); itemData.Text = ""; // assign some text here..; itemData.Value = ""; /*assign some value here..*/ result.Add(itemData); } return result.ToArray(); } […]

C#可sorting的集合,它允许重复的键

我正在编写一个程序来设置一个序列,其中各种对象将出现在报告中。 序列是Excel电子表格中的Y位置(单元格)。 代码的演示部分如下。 我想完成的是有一个集合,这将允许我添加多个对象,我可以得到一个基于序列的sorting集合 SortedList list = new SortedList(); Header h = new Header(); h.XPos = 1; h.name = "Header_1"; list.Add(h.XPos, h); h = new Header(); h.XPos = 1; h.name = "Header_2"; list.Add(h.XPos, h); 我知道SortedList不会允许这个,我一直在寻找替代。 我不想消除重复,并已经尝试List<KeyValuePair<int, object>> 。 谢谢。

LINQ在On子句中join了多个条件

我试图在LINQ中实现一个查询,在ON子句中使用具有多个条件的左外连接。 我将使用以下两个表Project (ProjectID,ProjectName)和Task (TaskID,ProjectID,TaskName,Completed)的示例。 我希望看到所有项目的完整列表以及他们各自的任务,但只有那些已经完成的任务。 我无法使用Completed == true的filter,因为这将过滤掉任何没有完成任务的项目。 相反,我想将Completed == true添加到连接的ON子句中,以便显示完整的项目列表,但只显示已完成的任务。 没有完成任务的项目将为Task显示一个空值的单行。 这是查询的基础。 from t1 in Projects join t2 in Tasks on new { t1.ProjectID} equals new { t2.ProjectID } into j1 from j2 in j1.DefaultIfEmpty() select new { t1.ProjectName, t2.TaskName } 如何在on子句中添加&& t2.Completed == true ? 我似乎无法find任何关于如何做到这一点的LINQ文档。

Linq:有条件地给where子句添加条件

我有这样的查询 (from u in DataContext.Users where u.Division == strUserDiv && u.Age > 18 && u.Height > strHeightinFeet select new DTO_UserMaster { Prop1 = u.Name, }).ToList(); 我想根据这些条件是否提供给运行此查询的方法来添加各种条件,如年龄,身高。 所有条件将包括用户司。 如果年龄提供,我想添加到查询。 相似,如果提供了高度,我想补充一点。 如果这是使用sql查询完成的,我会使用string生成器将它们追加到主strSQL查询中。 但是在Linq中,我只能想到使用一个IF条件,在这个条件下,我将三次写入相同的查询,每个IF块都有一个额外的条件。 有一个更好的方法吗? 谢谢你的时间..

LINQ OrderBy与多个字段

我有一个列表,我需要按两个字段sorting。 我已经尝试在LINQ中使用OrderBy,但只允许我指定一个字段。 我正在寻找列表进行sorting的第一个字段,然后如果有任何重复的第一个字段sorting第二个字段。 例如,我希望结果看起来像这样(按姓氏和名字sorting)。 亚当斯,约翰 史密斯,詹姆斯 史密斯,彼得 汤普森,弗雷德 我已经看到,你可以使用SQL语法来实现这一点,但我正在寻找一种方法来执行OrderBy方法。 IList<Person> listOfPeople = /*The list is filled somehow.*/ IEnumerable<Person> sortedListOfPeople = listOfPeople.OrderBy(aPerson => aPerson.LastName, aPerson.FirstName); //This doesn't work.

最简单的方法来旋转c#中的列表

列表说我有一个列表List<int> {1,2,3,4,5} 旋转意味着: => {2,3,4,5,1} => {3,4,5,1,2} => {4,5,1,2,3} 也许旋转不是这个最好的词,但希望你明白我的意思 我的问题,最简单的方法是什么(简而言之,C#4 Linq准备好了),并不会受到性能(合理的性能) 谢谢。

如何dynamic指定Linq OrderBy参数?

如何使用我作为参数的值来指定传递给orderby的参数? 例如: List<Student> existingStudends = new List<Student>{ new Student {…}, new Student {…}} 目前的实施: List<Student> orderbyAddress = existingStudends.OrderBy(c => c.Address).ToList(); 而不是c.Address ,我怎样才能把它作为一个参数? 例 string param = "City"; List<Student> orderbyAddress = existingStudends.OrderByDescending(c => param).ToList();

如何编写asynchronousLINQ查询?

在我读了一堆LINQ相关的东西之后,我突然意识到没有文章介绍如何编写asynchronousLINQ查询。 假设我们使用LINQ to SQL,下面的语句是明确的。 但是,如果SQL数据库响应缓慢,则使用此代码块的线程将受到阻碍。 var result = from item in Products where item.Price > 3 select item.Name; foreach (var name in result) { Console.WriteLine(name); } 似乎目前的LINQ查询规范不提供支持。 有什么办法做asynchronous编程的LINQ? 它的工作原理就好像有一个callback通知,当结果准备好使用时,在I / O上没有任何阻塞延迟。

LINQ与SQLite(linqtosql)

我有一个小项目,需要存储(我selectSQLite),我得到了良好的结果与Sqlite的.Net ADO DLL 。 安装后,我注意到它包含一个SQLLinq.dll。 在调查过多的努力之前,因为我没有看到任何networking上的好例子,我想知道是否有人用SQLite和LINQ得到了好的结果? *如果linqtosql的工作方式和SQL数据库一样,让我知道它。 当我看到它时,我对Dll很感兴趣,因为我以前从不使用Linqtosql,我认为这将是一个很好的尝试的机会,