Tag: lambda

如何以类型安全的方式编写具有列名作为参数的LINQ查询

我正在寻求有关如何使用LINQ以类型安全方式实现此目的的帮助。 我需要在包含许多列的“性能”表上执行搜索。 根据为搜索指定的条件,我需要选择列并对具有给定值的列执行搜索。 private static IQueryable PerformanceSearch(IQueryable investments, **??? searchColumn**, double minValue, double maxValue) { var entity = ExtendedEntities.Current; investments = from inv in entity.Investments join performance in entity.Performances on inv.InvestmentID equals perfromance.InvestmentID where **performance.searchColumn** >= minValue && **performance.searchColumn** = maxValue return investments; } 现在我正在寻求你的帮助: 如何以类型安全的方式将列“searchColumn”传递给此方法? 我正在考虑创建一个字典对象,以适应某种方式来维护entity framework中的列名。 但不知道如何实现这一目标。 如何使用传递的columnName和应用where子句来执行LINQ查询。 我不能使用If Else或Switch案例如下所示是可能的搜索列表… /* * Search […]

重构消除Lambda表达式中的重复

这两种方法表现出重复: public static Expression<Func> EditDtoSelector() { return f => new FooEditDto { PropertyA = f.PropertyA, PropertyB = f.PropertyB, PropertyC = f.PropertyC, PropertyD = f.PropertyD, PropertyE = f.PropertyE }; } public static Expression<Func> ListDtoSelector() { return f => new FooDto { PropertyA = f.PropertyA, PropertyB = f.PropertyB, PropertyC = f.PropertyC }; } 我怎样才能重构以消除这种重复? 更新:哎呀,我忽略了一个重要的观点。 FooEditDto是FooDto的子类。

在genericsList的ForEach()中使用lambda表达式中的条件运算符?

是不是允许在ForEach中的lambda表达式中有一个条件运算符? List items = new List{“Item 1”, “Item 2”, “Item I Care About”}; string whatICareAbout = “”; // doesn’t compile 🙁 items.ForEach(item => item.Contains(“I Care About”) ? whatICareAbout += item + “,” : whatICareAbout += “”); 编译错误 – >“只能将赋值,调用,递增,递减和新对象表达式用作语句” 尝试使用正常if也不起作用: // 🙁 items.ForEach(item => if (item.Contains(“I Care About”)) {whatICareAbout += item + “, “;} 只是不可能?

如何在lambda中进行sql连接?

我不时地偶然发现这个问题,我使用了lambda连接的子集。 鉴于我可以使用任何LINQ扩展,我应该如何实现以下连接: 为简单起见,表格定义为 CREATE TABLE [dbo].[TableA] ( [Key] INT IDENTITY (1, 1) NOT NULL, [Value] NVARCHAR (MAX) NULL, CONSTRAINT [PK_TableA] PRIMARY KEY CLUSTERED ([Key] ASC) ); CREATE TABLE [dbo].[TableB] ( [Key] INT IDENTITY (1, 1) NOT NULL, [Value] NVARCHAR (MAX) NULL, CONSTRAINT [PK_TableB] PRIMARY KEY CLUSTERED ([Key] ASC) ); 或者如果您首先喜欢代码 public class TableContext : DbContext […]

如何创建表达式树以执行与“StartsWith”相同的操作

目前,我有这种方法来比较两个数字 Private Function ETForGreaterThan(ByVal query As IQueryable(Of T), ByVal propertyValue As Object, ByVal propertyInfo As PropertyInfo) As IQueryable(Of T) Dim e As ParameterExpression = Expression.Parameter(GetType(T), “e”) Dim m As MemberExpression = Expression.MakeMemberAccess(e, propertyInfo) Dim c As ConstantExpression = Expression.Constant(propertyValue, propertyValue.GetType()) Dim b As BinaryExpression = Expression.GreaterThan(m, c) Dim lambda As Expression(Of Func(Of T, Boolean)) = […]

需要帮助了解lambda(currying)

我正在阅读Accelerated C#我真的不明白以下代码: public static Func Bind2nd ( this Func func, TArg2 constant ) { return (x) => func( x, constant ); } 在最后一行x指的是什么? 还有另一个: public static Func<TArg2, Func> Bind2nd ( this Func func ) { return (y) => (x) => func( x, y ); } 我该如何评价这个? (y) => (x) => func( x, y )传递的地方……它确实令人困惑。

如何从C#中的两个List 获取移动组合?

我有两个包含的List ListOne A B C ListTwo A B C D 现在我需要将移动组合转换为列表字符串 所以输出列表将包含 AB AC AD BC BD CD 现在我正在使用Nested for loop 。 有没有办法使用LINQ或LAMBDA EXPRESSION这样做请帮我这样做。 提前致谢 示例代码 List ListOne = new List { “A”,”B”,”C”}; List ListTwo = new List { “A”, “B”, “C”, “D” }; List Result = new List(from X in ListOne from Y in […]

使用Lambda表达式从字段名称中选择不同的字段

我需要从数据库表中获取两个字段(使用linq-to-sql检索),一个字段是日期时间(并且是固定字段),另一个字段始终是小数,但字段可以不同。 该表包含每天处理两次且以不同货币处理的货币数据,因此可能包含AM_USD,PM_USD,AM_EUR等字段。我需要获取数据,例如针对PM_USD的日期列表或针对AM_EUR的日期。 我希望能够使用lambda表达式调用数据(例如,这是一个剥离的示例): data = TableData.Select(x=>new {x.DateTimeAdded, x.[**field name as string**]}); 我一直试图写一个函数来做到这一点,并且失败了。 我管理的最接近的是: private Func<TableData, KeyValuePair> CreateSelect(string FieldName) { var parameterExp = Expression.Parameter(typeof(TableData), “sel”); var dateParameter = Expression.Parameter(typeof(DateTime), “DateTimeAdded”); var fieldParameter = Expression.Parameter(typeof(decimal), FieldName); ConstructorInfo constructorInfo = typeof(KeyValuePair).GetConstructor(new[] { typeof(DateTime), typeof(decimal) }); NewExpression constructExpression = Expression.New(constructorInfo, new ParameterExpression[] { dateParameter, fieldParameter}); var lambda = Expression.Lambda<Func<TableData, […]

对列表进行分组和求和

我有这个List List olst = new List(); olst.Add(new object[] { “AA1”, 1 }); olst.Add(new object[] { “AA2”, 1 }); olst.Add(new object[] { “AA2”, 1 }); olst.Add(new object[] { “AA1”, 1 }); olst.Add(new object[] { “AA1”, 1 }); 从olst ,我需要生成一个新的List来保存它: “AA1”, 3 “AA2”, 2 换句话说,我需要对olst [x] [0]进行分组并总结olst [x] [1] 。 我可以使用for循环,但我希望有人可以帮我使用lambda表达式和/或linq来实现这一点。

LINQ to SQL查询帮助(字符串包含字符串数组中的任何字符串)

我一直在用这个撕掉我的头发。 我有一系列搜索术语,我正在尝试使用LINQ to SQL查询来搜索数组中每个项目的字段值。 我到目前为止.. var searchResults = from x in SDC.Staff_Persons where staffTermArray.Any(pinq => x.Forename.Contains(pinq)) || staffTermArray.Any(pinq => x.Surname.Contains(pinq)) || staffTermArray.Any(pinq => x.Known_as.Contains(pinq)) orderby x.Surname select x; ……但后来了 除Contains()运算符外,本地序列不能用于查询运算符的LINQ to SQL实现 ……现在我被卡住了。 如果有人能帮忙,我会非常感激。 提前致谢。 抢