Tag: linq

使用Linq与自定义IEqualityComparer相交

长话短说:我有2个对象集合。 一个包含好的值(让我们称之为“好”),其他默认值(先生“默认”)。 我希望联盟的相交在良好和默认之间,以及默认。 换句话说:相交(联合(良好,默认),默认)。 有人可能认为它解析为默认值,但这里是棘手的:我使用自定义IEqualityComparer。 我得到了以下课程: class MyClass { public string MyString1; public string MyString2; public string MyString3; } class MyEqualityComparer : IEqualityComparer { public bool Equals(MyClass item1, MyClass item2) { if(item1 == null && item2 == null) return true; else if((item1 != null && item2 == null) || (item1 == null && item2 != […]

Linq查询还是Lambda表达式?

我在我的ASP.NET,C#,Web应用程序中使用Entity Framework。 如果我需要从DataBase中选择一条记录(在数据访问层中),我应该使用哪种方法? Linq查询还是Lambda表达式? 例如:- //Linq var result = from a in db.myTable.Take(1) where a.Id == varId select a; return result.First(); //Lambda return db.myTable.FirstOrDefault(a => a.Id == varId); 在这种情况下是否有任何首选方式或其他优势?

过滤包括LINQ和entity framework中的项目

我目前在我的应用程序中有这个LINQ / EF代码: var rootCategoryItem = DatabaseContext.Categories .Include(“SubCategories”) .OrderBy(c => c.CategoryOrder) .Single(c => c.CategoryId == 1); 我知道在EF中你不能过滤包含的项目,我可以编写一些LINQ代码来过滤掉不需要的子类别……但是LINQ代码被转换为一个非常不优化的可怕的SQL。 我还可以编写一个存储过程来执行此操作(并编写比LINQ更好的查询),但我真的想使用纯EF。 所以我留下了两个选项(除非有人可以看到其他选项)。 第一个是遍历子类别,删除不需要的子类别: var subCategoriesToFilter = rootCategoryItem.SubCategories.ToList(); for (int i = 0; i < subCategoriesToFilter.Count; i++) { if (subCategoriesToFilter[i].Deleted) rootCategoryItem.SubCategories.Remove(subCategoriesToFilter[i]); } 第二种选择是在我看来这样做: @foreach (var categoryitem in Model.SubCategories.OrderBy(c => c.CategoryOrder)) { @if(!Model.Deleted) { @Model.CategoryName } } 在2中,哪一个是最好的选择? 或者我还有另一种选择吗? 解决方案 […]

使用C#查找字符串中出现次数最多的字符?

例如,我有一个字符串: “abbbbccd” b出现次数最多。 使用C ++时,处理此问题的最简单方法是将每个字符插入到map 。 我是否必须在C#中做同样的事情? 使用LINQ有一种优雅的方式吗?

使用Enumerable.OfType ()或LINQ查找特定类型的所有子控件

存在MyControl1.Controls.OfType()仅搜索初始集合,不进入子节点。 是否可以使用Enumerable.OfType()或LINQ查找特定类型的所有子控件而无需编写自己的递归方法? 像这样 。

运营商’||’ 不能应用于’lambda expression’和’lambda expression’类型的操作数

如何构造包含OR的LINQ WHERE子句? 我有一个对象列表,我想返回符合搜索条件的对象。 包含的对象有很多属性,只要符合条件,我想返回它: IEnumerable list; String keyword; … var results = list.Where( (item => item.Name.Contains(keyword, StringComparison.CurrentCultureIgnoreCase)) || (item => item.Description.Contains(keyword, StringComparison.CurrentCultureIgnoreCase)) || (item => item.Description.Contains(keyword, StringComparison.CurrentCultureIgnoreCase)) || (item => item.ItemType.Contains(keyword, StringComparison.CurrentCultureIgnoreCase)) || (item => item.ItemID.ToString().StartsWith(keyword, StringComparison.CurrentCultureIgnoreCase)) || (items => items.Value.ToString().StartsWith(keyword, StringComparison.CurrentCultureIgnoreCase)) ); 但是无法编译: 运营商’||’ 不能应用于’lambda expression’和’lambda expression’类型的操作数 如何构造包含OR的LINQ WHERE子句? 也可以看看 LINQ在哪里或过滤c#

列出复杂排序

我有一个大小的List ,比如XS,S,M,L,XL,XXL,UK 10,UK 12等 我想要的是强制订单是上面的,无论列表中的项目顺序如何,我想我需要一个IComparable运算符,但不确定。 理想情况下,我想让另一个List具有正确的顺序,它可以在列表中引用它的’place’并重新排序,如果它不存在则默认为AZ

由于已使用MVC 4处理了DbContext,因此无法完成操作

我知道这个问题被问过这么多次。 我已阅读并实施了所有解决方案但未获得成功。 当我使用EF从数据库检索数据并在View上使用此模型后与模型绑定时,我收到此错误。 我的控制器代码是 using System.Linq; using System.Web.Mvc; using JsonRenderingMvcApplication.Models; namespace JsonRenderingMvcApplication.Controllers { public class PublisherController : Controller { public ActionResult Index() { PublisherModel model = new PublisherModel(); using (DAL.DevelopmentEntities context = new DAL.DevelopmentEntities()) { model.PublisherList = context.Publishers.Select(x => new SelectListItem() { Text = x.Name, Value = x.Id.ToString() }); ; } return View(model); } } […]

List 的Last()扩展方法的性能如何?

我真的很喜欢Last()并且会一直使用List 。 但由于它似乎是为IEnumerable定义的,我想它首先枚举枚举 – 这应该是O(n)而不是O(1)直接索引List的最后一个元素。 标准(Linq)扩展方法是否意识到这一点? C ++中的STL通过迭代器和诸如此类的整个“inheritance树”来意识到这一点。

将匿名类型转换为类

我在List anBook中有一个匿名类型: var anBook=new []{ new {Code=10, Book =”Harry Potter”}, new {Code=11, Book=”James Bond”} }; 是否可以将其转换为具有以下clearBook定义的List: public class ClearBook { int Code; string Book; } 通过使用直接转换,即不通过书籍循环?