Tag: linq

具有单引号冲突的DataTable select方法C#

我最近发现当我在包含撇号的字段下进行LINQ选择时,它会使我的应用程序抛出exception。 DataRow[] newDr = this.ds.Tables[“TableName”].Select(“Name = ‘” + drData[“Name”].ToString() + “‘”); 如果drData [“姓名”] =“商家的钱” I got an exception of “Syntax error: Missing operand after ‘S’ operator ” 任何人都可以告诉我如何保存它,不要更换它或删除它,好吗?

将SQL子查询转换为In到Linq Lambda

如何将以下SQL语句转换为Lambda表达式或Linq查询? 以下查询获取每个问题的单个最新答案。 或者用另一种方式来表达,用最新的答案得到每个问题。 这也将由Entity Framework执行。 SELECT Answers.* FROM Answers Where AnswerID IN ( SELECT Max(AnswerID) AnswerID FROM Answers GROUP BY QuestionID ) 这是使用内部联接查看上一个查询的另一种方法 SELECT answers.* FROM answers INNER JOIN ( SELECT Max(answerID) answerID –, QuestionSiteID FROM answers GROUP BY QuestionID ) t ON answers.answerID = t.answerID 我已经读过LINQ Contains方法对于访问SQL的查询是次优的。 LINQ to Sql和.Contains()陷阱。

按枚举说明排序

我首先使用EF代码编写ASP.NET MVC项目,我面临的情况是需要通过枚举描述进行排序: public partial class Item { public enum MyEnumE { [Description(“description of enum1”)] Enum1, [Description(“description of enum2”)] Enum2, … } public MyEnumE MyEnum { get; set; } } 这是Search和SortAndPaginate函数: public async Task<IPagedList> Search(ItemCriteria criteria, SortableTypeE sortName, SortOrder.TypeE sortOrder, int pageNb) { var itemFilter = GenerateFilter(criteria); var items = entities.Items.Where(itemFilter); return await SortAndPaginate(items, sortName, sortOrder, […]

如何在C#/ .NET中使用LINQ表达式树调用lambda

我想使用表达式树动态创建一个方法来调用lambda。 第一次调用ComposeLambda函数时,以下代码运行正常,但第二次调用失败,并显示以下错误消息。 为调用方法’Int32 lambda_method(System.Runtime.CompilerServices.Closure,Int32)提供的参数数量不正确 { Func innerLambda = i => i + 1; var composedLambda = ComposeLambda(innerLambda); Console.WriteLine(composedLambda.DynamicInvoke(0)); var composedLambda2 = ComposeLambda(composedLambda); Console.WriteLine(composedLambda2.DynamicInvoke(0)); } private static Delegate ComposeLambda(Delegate innerLambda) { Func outerLambda = i => i + 2; var parameter = Expression.Parameter(typeof (int)); var callInner = Expression.Call(innerLambda.GetMethodInfo(), parameter); var callOuter = Expression.Call(outerLambda.GetMethodInfo(), callInner); var composedLambdaType […]

将Ado.net DataReader转换为IDataRecord会产生奇怪的结果

我有一个针对数据库运行的查询,我可以看到有一个31/05/2013的记录。 当我使用ADO.NET从C#运行此查询,然后使用以下代码时,我错过了31/05/2013的记录 var timeSeriesList = new List(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { timeSeriesList = reader.Cast() .Select(r => new TimeSeries { MidRate = (double)r[“MidRate”], RiskFactorName = (string)r[“RiskFactorName”], SeriesDate = (DateTime)r[“SeriesDate”] }).ToList(); } } 但是,如果我对此代码使用相同的查询: var timeSeriesList = new List(); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { var timeSeries = new […]

使用Linq to Entities在一次操作中获取COUNT和SKIP TAKE

我在Linq to Entities供电数据访问层中进行了数据调用,该层旨在进行分页调用。 在这样做时,我需要选择数据的一个子集,比如50行,但也要获得所有匹配的计数,以了解要分页的总匹配数。 目前,我正在做以下事情: var queryResult = DatabaseContext.Table .Where(x => !x.IsDeleted) .Where(p => ( p.PropertyOne.ToLower().Contains(query) || p.PropertyTwo.ToLower().Contains(query) )); int count = queryResult.Count(); var returnData = queryResult .OrderBy(i => i.ID) .Skip(start).Take((length)) .Select(y => new ObjectDTO { PropertyOne = y.PropertyOne, PropertyTwo = y.PropertyTwo } .AsEnumerable(); 这导致两个昂贵的数据库操作。 由于某种原因, COUNT操作实际上需要比SELECT操作更长的时间。 有没有办法在同一个操作中获取计数和子集? 我的逻辑流程说我们做了以下事情: 看表 在表中查找与条件匹配的项目 获取所有比赛的计数 返回匹配的编号子集 这似乎可以在一次操作中,但我无法弄清楚如何。 尝试一,慢 […]

如何在字符串中查找特定句子的所有出现?

假设我有一个这样的字符串: string source = “Today is friday! I’m am having trouble programming this. Today is friday! Tomorrow is saturday. Today is friday!” 我想搜索这个字符串,抓住所有句子,说“今天是星期五!”,然后用我刚发现的句子创建一个新的字符串。 上述字符串的预期结果是: string output = “Today is friday!Today is friday!Today is friday!” 编辑:LINQ不是强制性的。 谢谢!

使用Lambda或LINQ将类实例转换或映射到另一个实例的列表?

我有以下两个类: class MyData { public List PropertyList { get; private set;} public string PropertyB { get; set; } public string PropertyC { get; set; } } class MyData2 { public string PropertyA { get; set;} public string PropertyB { get; set; } public string PropertyC { get; set; } } 如果我有MyClass的实例,我需要将其转换为MyData2列表。 我可以通过循环MyData.PropertyList并缓存其他属性值并将它们插入MyData2列表来实现,如下所示: string propertyB = […]

条件LINQ在哪里声明?

我有一个linq语句,如果下拉索引不是0,我想添加一个额外的where子句。 people.Where(n.surname == “surname” || n.forename == “forename” && (dropdown.SelectedIndex > 0) ? n.id = dropdown.SelectedValue : n.id > 0).Select(n => n); 我甚至不确定我的尝试是否可能? 我想这样做,而不是写两个不同的陈述。 有任何想法吗? 谢谢

如何在我的可视化C#web服务中为我的Android应用程序调用LINQ中的用户定义函数?

我目前正在开发一个应用程序,它将根据距离检索其他用户的位置。 我有一个数据库,以纬度和经度存储所有用户位置信息。 由于这两对纬度和经度之间的距离计算非常复杂,我需要一个函数来处理它。 from a in db.Location.Where(a => (calDistance(lat, longi, Double.Parse(a.latitude), Double.Parse(a.longitude)))<Math.Abs(distance) )) {…} 但是,我收到以下错误:LINQ to Entities无法识别该方法,并且此方法无法转换为商店表达式。 我不知道如何将它翻译成商店表达式,而且,计算也需要数学库。 是否有任何方法可以让LINQ表达式调用我自己的函数? 也许有其他方法可以实现我的目标,任何人都可以帮忙吗?