Tag: linq

值在枚举列表中

我有一个相当基本的问题:如何检查给定值是否包含在枚举值列表中? 例如,我有这个枚举: public enum UserStatus { Unverified, Active, Removed, Suspended, Banned } 现在我想检查status in (Unverified, Active) 我知道这有效: bool ok = status == UserStatus.Unverified || status == UserStatus.Active; 但必须有一种更优雅的方式来写这个。 这个queston的主题非常相似,但那是处理标志枚举,这不是标志枚举。 提前致谢。

使用LINQ的IQueryable左外连接的扩展方法

我试图实现返回类型为IQueryable Left outer join扩展方法。 我写的function如下 public static IQueryable LeftOuterJoin2( this IQueryable outer, IQueryable inner, Func outerKeySelector, Func innerKeySelector, Func resultSelector) { return from outerItem in outer join innerItem in inner on outerKeySelector(outerItem) equals innerKeySelector(innerItem) into joinedData from r in joinedData.DefaultIfEmpty() select resultSelector(outerItem, r); } 它无法生成查询。 原因可能是:我使用了Func而不是Expression 。 我也试过Expression 。 它在outerKeySelector(outerItem)行上给出了一个错误,即outerKeySelector是一个用作方法的变量 我发现了一些关于SO(例如这里 )和CodeProjects的讨论,但是那些适用于IEnumerable类型的讨论不适用于IQueryable 。

从列表中获取不同的项目

我有一个具有三个整数属性的对象列表。 如何从列表中获取第一个整数属性的不同值?

如何使用LINQ to SQL创建通用数据访问对象(DAO)CRUD方法

我是LINQ to SQL的新手,并尝试为基本的创建,读取,更新和销毁(CRUD)方法创建通用数据访问对象(DAO),以便我可以重用代码。 我成功地创建了一个通用方法,它将使用下面的代码删除任何实体但是,我想知道是否有人知道如何创建一个通用方法,它将通过所有表中存在的公共Id字段选择任何实体。 /// /// Generic method that deletes an entity of any type using LINQ /// /// /// bool indicating whether or not operation was successful public bool deleteEntity(Object entity) { try { DomainClassesDataContext db = new DomainClassesDataContext(); db.GetTable(entity.GetType()).Attach(entity); db.GetTable(entity.GetType()).DeleteOnSubmit(entity); db.SubmitChanges(); return true; } catch(Exception ex) { Console.WriteLine(ex.StackTrace); return false; } } 我很确定相同的模式将适用于更新和插入,并希望在GenericDAO上有一个通用方法,它将根据实体Id检索我任何实体(即Customer,Invoice,WorkOrder等…)。 […]

Linq 中的lambda /方法语法中的左外连接

可能重复: 如何使用linq扩展方法执行左外连接 我找不到Linq lambda的左外连接示例(使用扩展方法),至少不是一个明确的。 假设我有下表: Parent { PID // PK } Child { CID // PK PID // FK Text } 我想加入Parent with Child,对于每个失踪的孩子,我希望Text的默认值为“[[Empty]]”。 我怎么能用linq lambda语法做到这一点? 我目前有以下内容: var source = lParent.GroupJoin( lChild, p => p.PID, c => c.PID, (p, g) => new // ParentChildJoined { PID = p.PID; // How do I add child values […]

如何从LINQ DataContext.SubmitChanges()获取TSQL查询

我正在使用Linq to SQL。 我有一个DataContext,我就是.SubmitChanges()。 插入标识字段时出错,我希望看到它用于插入此标识字段的查询。 我在快速监视器中看不到查询本身; 我在哪里可以从调试器中找到它?

IQueryable OfType 其中T是运行时类型

我需要能够得到类似以下的东西才能工作: Type type = ??? // something decided at runtime with .GetType or typeof; object[] entityList = context.Resources.OfType().ToList(); 这可能吗? 如果有任何新内容允许,我可以使用.NET 4。

如何为Like创建System.Linq.Expressions.Expression?

我从这个源创建了一个可过滤的BindingList。 它很棒: list.Filter(“Customer == ‘Name'”); 应该做什么。 内部!=像解析器一样工作,将表达式==或!=转换为System.Linq.Expressions.Expression 。 在这种情况下, ==成为System.Linq.Expressions.Expression.Equal 。 不幸的是System.Linq.Expressions.Expression不包含like运算符,我不知道如何解决这个问题。 初始代码如下所示: private static Dictionary<String, Func> binaryOpFactory = new Dictionary<String, Func>(); static Init() { binaryOpFactory.Add(“==”, Expression.Equal); binaryOpFactory.Add(“>”, Expression.GreaterThan); binaryOpFactory.Add(“=”, Expression.GreaterThanOrEqual); binaryOpFactory.Add(“<=", Expression.LessThanOrEqual); binaryOpFactory.Add("!=", Expression.NotEqual); binaryOpFactory.Add("&&", Expression.And); binaryOpFactory.Add("||", Expression.Or); } 然后我创建了一个能够做我想要的表达式: private static System.Linq.Expressions.Expression<Func> Like_Lambda = (item, search) => item.ToLower().Contains(search.ToLower()); private static Func Like = […]

查找经度和纬度最近的位置

我正在处理我需要到达附近位置的应用程序,我的Web服务将收到2个参数(十进制经度,十进制纬度) 我有一个表,其中的位置保存在数据库中的经度和纬度字段, 我想找回最近的位置。 有人可以帮忙吗? 这是我的代码: var locations = from l in locations select l 以下是有关此内容的更多详细信息:我在数据库表中有2个字段(十进制(18,2)null)1个纬度,2个经度, 我有一个方法 public List GetLocation(decimal? Long, decimal? lat) { var Loc = from l in Locations //// now here is how to get nearest location ? how to query? //// i have also tried Math.Abs(l.Lat – lat) its giving error about […]

SqlDataReader – 如何将当前行转换为字典

有没有一种简单的方法将SqlDataReader的当前行的所有列转换为字典? using (SqlDataReader opReader = command.ExecuteReader()) { // Convert the current row to a dictionary } 谢谢