Tag: linq

使用参数Func 重载方法

我想创建一些接受Func参数的重载方法。 重载方法应该使用参数中定义的最通用类型调用该方法。 下面是我的方法的一个简单示例,以及我想如何调用它们: public static TResult PerformCaching(Func func, T1 first, string cacheKey) { return PerformCaching((t, _, _) => func, first, null, null, cacheKey); } public static TResult PerformCaching(Func func, T1 first, T2 second, string cacheKey) { return PerformCaching((t, t2, _) => func, first, second, null, cacheKey); } public static TResult PerformCaching(Func func, T1 first, T2 […]

Linq比较C#中的两个集合

我想比较C#中的两个集合,我目前正在使用嵌套的“for”循环。 Linq有没有办法做同样的事情会更快更有效率? 这是我目前的代码,它只是寻找一种有效的方法: OrgCollection myYears = Org.RetrieveDistinctYear(); if (myYears.Count > 0) { AcademicYearCollection allYears = AcademicYear.RetrieveAll(); for (int i = 0; i < myYears.Count; i++) { for (int j = 0; j < allYears.Count; j++) { if (myYears[i].AcademicYearCode == allYears[j].Code) { ddlYear.Items.Insert(0, new ListItem(allYears[j].Name,allYears[j].Code)); break; } } } } 我想将AcademicYearCollection中的“Code”与OrgCollection中的“AcademicYearCode”属性进行比较,如果它是相同的,则将其添加到Dropdownlist“ddlYear”中。 提前致谢。

数据结构列表列表 – 如何使用linq访问?

我从一个访问文件的软件制造商处获得了ac#程序,并给出了一份数据结构列表 List<List> RasterSet = new List<List>(); 这给了我一个“索引”的列表 RasterSet Count = 100 [0]Count = 400 [1]Count = 411 等等。 在那些我有另一个“索引”列表,其中包含实际的数据结构 [0] [X] [Y] [Z] … [399] [X] [Y] [Z] 所以现在我需要访问列表列表中数据结构的X,Y,Z部分。 例如,是否可以使用LINQ来表示 if (RasterSet[i] >= 0 && Rasterset[i] = zZ); 给我一个“索引”[0]到[10]中包含的所有Z值的平均值,每个索引都有数百或数千个二级索引,每个索引都有[x] [y] [ z]值? 编辑:我拼凑了一个双重foreach,通过从复杂结构制作一个正常列表,然后在该列表上使用普通linq。 我仍然喜欢一气呵成。 感谢大家的建议

如何在LINQ中执行String.Replace?

这是我想要做的但没有成功。 我想from x in list1调用并join y in list2 where regex.Match(x.Value).Success 。 在这些步骤之后,我需要在x.Value上调用String.Replace两次。 然后调用on和select运算符。 我希望它看起来像第二个例子。 如何实现这一目标? 这是我的列表的样子: list1 list2 Name Value Name Value item.1 $(prod1) prod1 prodVal1 item.2 $(prod2) prod2 prodVal2 item.3 prod3 prod3 prodVal3 这是我的列表应该是这样的: updatedList Name Value item.1 prodVal1 item.2 prodVal2 item.3 prod3 示例1(这是我目前拥有的): foreach (var x in list1) { Match match = reg.Match(x.Value); […]

Linq首先跳到哪里(linq到对象)

我需要跳过匹配谓词的第一个元素作为linq查询。 到目前为止,我可以告诉我能做的最好的事情是这样的: var list = new [] {1,2,3,4,5,6,7,8,9}; var skippedFirstOdd = false; var skipFirstEvenNumber = list.SkipWhile(number => { if(number % 2 != 0) { skippedFirst = true; return true; } else { return false; } }); 哪个有效(我认为),但不是很优雅。 有没有更清洁的方法来实现这一目标?

如何ToLookup()与多个索引?

考虑下面的C#Console应用程序的代码,使用 如何修改它以替换该行: foreach (Product product in productsByCategory[category]) 通过代码行 foreach (Product product in productsByCategory[category][Id]) ? using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace myQuestion { class Program { static void Main(string[] args) { var products = new List { new Product { Id = 1, Category = “Garden”, Value = 15.0 }, new Product { […]

不支持输入类型为“Domain.Entities.Request”的“TypeIs”表达式和“Domain.Entities.Base”类型的检查

我收到这个错误: 不支持带有“Domain.Flood.Entities.Things.SomeObject”类型输入的“TypeIs”表达式和“Domain.Entities.Base”类型的检查。 LINQ to Entities查询仅支持实体类型和复杂类型。 我正在尝试调用我的OData API并在我的对象上展开CreatedBy属性。 CreatedBy属性位于基类中,是一种User。 所以我的基类看起来像这样: [DataContract(Namespace = “http://schemas.microsoft.com/ado/2007/08/dataservices”)] public abstract class Base { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [DataMember] public int Id { get; set; } [DataMember] public string Name { get; set; } [DataMember] public string Description { get; set; } private User createdBy; [DataMember] public virtual User CreatedBy { get { return […]

LINQ to Entities无法识别方法’System.Object Parse(System.Type,System.String)’

我收到此错误,我试图解决它很长但无法解决它。 LINQ to Entities无法识别方法’System.Object Parse(System.Type,System.String)’方法,并且此方法无法转换为商店表达式。 public static List GetAllProductCustomziation(string catID) { var arrcatID = catID.Split(‘_’); int PId = int.Parse(arrcatID[0].ToString()); int CatID = int.Parse(arrcatID[1].ToString()); EposWebOrderEntities db = new EposWebOrderEntities(); List lstCust = new List(); lstCust.AddRange((from xx in db.vw_AllCustomization where xx.CatID == CatID && xx.ProductID == PID select new itmCustomization() { itmName = xx.Description, catId = (int)xx.CatID, […]

具有字符串赋值和获取值的表达式树

我已经构建了自己的SQL查询构建器,它拆分了一个Expression,但是,我在尝试获取与lambda表达式相同的函数中定义的字符串值时遇到了问题。 这是我在控制台应用程序中尝试做的事情: private static void MyBuilderTest() { var sqlBuilder = new SqlBuilder(); // Doesn’t work — NEED GUIDANCE HERE var testValue = “Test”; // Defined in the same function as the lambda below sqlBuilder.Select(o => o.FooValue == testValue); // Works var someObject = new SomeObject { SomeValue = “classTest }; sqlBuilder.Select(o => o.FooValue == someObject.SomeValue); […]

entity framework对鉴别器做了案例

有没有办法将内部查询转换为子类? 如果我只查询单个子类,我会这样做 auctions.OfType().Where(auctionBid => auctionBid.AuctionBidProp) 现在我想对子类的类型做一个案例 auctions.Where(auction => (auction is AuctionBid) && ((AuctionBid) auction).Prop == 1 || (auction is AuctionBuy) && ((AuctionBuy) auction).Prop == 1) 有没有办法做到这一点? 当然上面的行给出了一个错误:LINQ to Entities仅支持转换EDM原语或枚举类型。