Tag: linq

我可以在C#中使用linq压缩if语句吗?

在sql中,我可以创建一个if语句,如下所示如果MY_STATE在(1,2,3,4) 在C#中我必须输入if(MY_STATE == STATE.CT || MY_STATE == STATE.MA || MY_STATE == STATE.VA || MY_STATE == STATE.RI) 这显然更笨重。 我可以使用LINQ来模仿sql的“in”语句吗? 我正在寻找像if(MY_STATE in(STATE.CT,STATE.MA,STATE.VA,STATE.RI))之类的东西

不使用LinQ查询语法调用Select方法

我想在我的类上启用LinQ查询语法。 我认为查询语法被转换为方法语法,例如: var query = from p in new Class1() where p.Id == “1000” select p 被翻译成: var query = new Class1().Where(p => p.Id == “1000”).Select(p => p); 然后我将Class1实现为: public class Class1 { public Class1 Where(Expression<Func> expression) { return this; } public Class1 Select(Func expression) { return this; } } 我用这段代码测试了它: static void Main(string[] args) […]

collections被修改; 枚举操作可能无法在Except操作上执行

我试图从循环中的DataTable dt中删除一些行,我得到上述exception: while (dt.Rows.Count > 0 && retry < Globals.PushRetryLimit) { var query = dt.AsEnumerable().Except(successBatch.AsEnumerable(), DataRowComparer.Default) .AsEnumerable().Except(failBatch.AsEnumerable(), DataRowComparer.Default); if (dt.AsEnumerable().Any()) dt = query.CopyToDataTable(); } successBatch和failBatch都是dt DataTable克隆。 在提出此错误的其他问题中,我们正在处理foreach循环。 为什么会出现此错误? 堆栈跟踪: at System.Data.DataTableExtensions.LoadTableFromEnumerable[T](IEnumerable`1 source, DataTable table, Nullable`1 options, FillErrorEventHandler errorHandler) at System.Data.DataTableExtensions.CopyToDataTable[T](IEnumerable`1 source)

在LINQ中对IEnumerable进行排序

如何对给定的示例进行排序。 IEnumerable eList = new List() { new extra{ id = 1, text = “a”}, new extra{ id = 2, text = “g”}, new extra{ id = 3, text = “i”}, new extra{ id = 4, text = “e”}, new extra{ id = 5, text = “f”}, new extra{ id = 6, text = “d”}, […]

LINQ to Entities中仅支持无参数构造函数和初始值设定项

parcelas = (from docuRec in Dados.DOCUREC where docuRec.CODALUNO == codAluno && docuRec.CODESCOLA == codEscola && (configBoleto.DtVencimentoInicial >= (docuRec.VENCESP != null ? new DateTime(docuRec.DTVENCIMENTO.Year, docuRec.DTVENCIMENTO.Month, docuRec.VENCESP.Value) : docuRec.DTVENCIMENTO)) select docuRec); LINQ to Entities中仅支持无参数构造函数和初始值设定项 有谁能够帮我?

LINQ:无法将类型’System.Collections.Generic.IEnumerable ‘隐式转换为’int’

我从以下代码中收到错误: int dreamX[]; private void Form1_Load(object sender, EventArgs e) { sumX(); } private void sumX() { for (var i = 0; i < 8; i++) { dreamX[i] = from Control control in Controls where control.GetType() == typeof(TextBox) && control.Name.StartsWith("box") select Convert.ToInt32(((TextBox)control).Text); } } 我收到此错误,如何显式转换此错误。 “无法将类型’System.Collections.Generic.IEnumerable -int-‘隐式转换为’int’”

LINQ to Entities无法将方法Generic.List(int)识别为Generic.IEnumerable(int)方法

数据库包含订单。 订单可以包含在一组订单中。 对于每组订单,它可以包含1到多个订单。 但是,Orders可以为NULLO值分配GroupOrderId,因为之前的Orders没有分组概念。 只有新订单强制执行添加到组的概念。 要为每个订单执行操作而要填充的类结构是 public class OrdersGroup { public int? GroupOrderId { get; set; } public List OrderIds { get; set; } } linq声明 var workPacketOrdersList = (from o in db.Orders where o.GroupOrderId >= groupOrderIdMin && o.GroupOrderId g.OrderId).ToList() }).ToList(); 完全例外 LINQ to Entities does not recognize the method ‘System.Collections.Generic.List`1[System.Int32] ToList[Int32](System.Collections.Generic.IEnumerable`1[System.Int32])’ method, and this […]

c# – 使用嵌套属性动态生成linq select

目前我们有一个包从字符串中的字段动态生成linq select。 它适用于平面属性,但它不适用于像someObj.NestedObj.SomeField这样的嵌套字段。 我们当前的代码在服务方法中如下所示: _context.Shipments .Where(s => s.Id == request.Id) // it does not matter just an example .Select(request.Fields) .ToPage(request); // ToPage extension comes from a nuget package 请求对象的参数“fields”只是一个用逗号分隔的字符串,包括Shipment对象的属性。 我对Shipment进行了一些重构,我将一些字段分组为一个名为Address的新类,并将其添加到Shipment中,如下所示: // before refactoring class Shipment { // other fields… public string SenderAddress; public string SenderCityName; public string SenderCityId; public string RecipientAddress; public string CityName; public […]

C#Entity LINQ返回错误和重复的值

我使用以下代码: List Imeasurements = context.vw_GetIMeasurements.Where(f => f.MEMBERID == userID).Distinct().ToList(); 这会返回一个包含12个值的列表,但它们应该是相同的(尽管它们不在数据库中。(即使它们是不同的,也应该解决这个问题) D B : 返回的原始值也是错误的。 这个问题的原因是什么,我该如何解决?

在linq中为什么后续调用IEnumerable.Intersect这么快

在看这个问题C#两个数组的相似性时,注意到初始linq调用明显慢于后续调用。 正在缓存什么才能产生这样的差异? 我感兴趣的是什么时候我们可以期望实现这种类型的行为(也许这只是因为相同的列表被反复使用)。 static void Main(string[] args) { var a = new List() { 7, 17, 21, 29, 30, 33, 40, 42, 51, 53, 60, 63, 66, 68, 70, 84, 85, 91, 101, 102, 104, 108, 109, 112, 115, 116, 118, 125, 132, 137, 139, 142, 155, 163, 164, 172, 174, 176, 179, 184, 185, […]