Tag: linq

使用LINQ枚举的正确方法是什么?

码: var result = db.rows.Take(30).ToList().Select(a => AMethod(a)); db.rows.Take(30)是Linq-To-SQL 我使用ToList()来枚举结果,因此查询的其余部分不会转换为SQL 这是最快的方法吗? ToArray的()?

LINQ to SQL和不变性

我尝试使用LINQ to SQL。 Everythign工作得很好但似乎对不可变对象不友好。 LINQ to SQL要求我为不可变类创建一个无参数构造函数。 但我希望它是不可变的,所以我想只允许人们每次都使用所有必需的参数创建它。 同样,我需要在我的所有成员上安装。 有没有办法让我仍然可以使用LINQ 2 SQL而不放弃我的不变性? 这是我的代码: DataContext db = new DataContext(“myconnectistring”); Table myImmutableObjects = db.GetTable(); 它会抛出没有setter的exception,也没有没有参数的默认构造函数。

列表的GroupBy具有容差不起作用

我对C#的Groupby有疑问。 我制作了如下所示的List : List testList = new List(); testList.Add(1); testList.Add(2.1); testList.Add(2.0); testList.Add(3.0); testList.Add(3.1); testList.Add(3.2); testList.Add(4.2); 我想将这些数字列表分组如下: group 1 => 1 group 2 => 2.1 , 2.0 group 3 => 3.0 , 3.1 , 3.2 group 4 => 4.2 所以,我写了这样的代码: var testListGroup = testList.GroupBy(ele => ele, new DoubleEqualityComparer(0.5)); DoubleEqualityComparer定义如下: public class DoubleEqualityComparer : IEqualityComparer { private […]

LINQ中的匿名类型查询或普通查询

var emps = from x in DB where x.ID = 100 select x; var emp1 = from x1 in DB where x1.ID = 100 select new { x }; 这两个查询之间有什么区别。 如果我们使用匿名类型,性能会增加还是其他任何差异呢?

Linq选择Item,它在另一个表中等于ID

我不确定这是多么可能,但我有两个表,我想通过表1的值从表2中获取一个值。 表1有一个名为“rank”的外键,它是一个int 。 表2有一个名为“name”的值,它是一个string 。 现在表1的“等级”与表2的“ID”相关。 所以,当我说 var result = db.Table1.Select(x => new { x.name, x.rank }).ToList(); //Bob – 2 我真的想说些什么 var result = db.Table1.Select(x => new { x.name, Table2.rank.Where(ID == x.rank) }).ToList(); //Bob – Gold 我仍然是LINQ的新手,我不知道如何在这样的查询中从其他表中获取rank的字符串值。 编辑 我正在使用的表及其关系值。 用户:ID(PK),s1elo(FK到PastElos),冠军(FK到ChampionList),elo(FK到EloList) PastElo:ID(PK),排名 冠军名单:ID(PK),名称 EloList:ID(PK),Rank 用户和PastElo的工作示例 var result = db.Users.Join(db.PastEloes, x => x.s1elo, y => y.ID, (x, […]

如何使用Linq和C#在entity framework中获取多个结果集?

在我的存储过程中,我有两个基于两个结果集的select语句我想使用linq和c#代码获取详细信息。 以下是我的存储过程: Create Proc SP_GetResult As Begin Select Id,Name from EmployeeTable; Select ContactNo,DateOfBirth from Customer; End 我尝试下面的代码使用Linq调用存储过程: Public void SelectValues() { using (Entities1 entity = new Entities1()) { var list = entity.SP_GetResult foreach (var test in list) { var test12123 = test; } } } 我只能得到EmployeeTable的详细信息。 但是,我无法获得客户表详细信息。 怎么做 ? 任何的想法 ?

IEnumerable.Except不会工作,所以我该怎么办?

我有一个linq to sql数据库。 非常简化,我们有3个表,项目和用户。 有一个名为User_Projects的连接表将它们连接在一起。 我已经有了一个为给定用户获取IEnumberable的工作方法。 from up in User_Projects select up.Project; 现在我想获得用户没有参与的项目。 我认为IEnumerable的except方法在这里会很不错: return db.Projects.Except(GetProjects()); 编译,但是我得到一个运行时错误:“除了Contains()运算符之外,本地序列不能用于查询运算符的LINQ to SQL实现。” 有没有办法解决这个问题? 更新: 一些观点,但没有答案:p 我试过这个: IEnumerable allProjects = db.Projects; IEnumerable userProjects = GetProjects(); return allProjects.Except(GetProjects()); 我知道它与原始语句基本相同 – 但现在我没有得到运行时错误。 不幸的是,它并没有真正做除了部分而只是返回所有项目,出于某种原因

Linq + Where + abstract method = LINQ to Entities无法识别方法

首先:我知道关于这个话题已经有很多问题了。 但我真的找不到任何解决方案我的问题。 我的问题是我使用抽象方法从dbset中进行选择。 我的代码如下所示: var dbe = (from i in dbEntities where IsEqualRecord(me, i) select i); 这是我的抽象方法deklaration: protected abstract bool IsEqualRecord(MEntity modelEntities, DEntity databaseEntity); MEntity和DEntity是generics类型。 我已经读过我的where语句无法转换为sql语句。 但是我该如何解决这个问题呢? 还有其他方法吗? 请不要投票来关闭这个问题。 我已经看了几乎所有关于stackoverflow的类似问题,但我找不到解决方案。

使用MongoDB的官方C#驱动程序进行按位枚举(标志)查询

当我尝试运行表单的LINQ查询时: MongoCollection collection; collection.AsQueryable().Where(entity => (entity.Flags & MyFlags.AFlag) != MyFlags.None); 我得到一个带有消息Unsupported where clause: ((Int32)((Int32)entity.Flags & 4) != 0).的ArgumentException Unsupported where clause: ((Int32)((Int32)entity.Flags & 4) != 0). 这是一个已知的错误/function吗? 有没有解决方法? 从文档中可以看出,MongoDB有一个按位更新,但不是按位查询。 为了进行比较,使用ServiceStack作为客户端,相同的查询在Redis上方顺利运行。 我确实找到了建议使用JavaScript的这两个链接( link1 , link2 ),这将使服务层的实现非常依赖于DB技术。

在文本文件中搜索,直到特定字符串

我正在编写一个程序来搜索文本文件,每个文件都有一个特定的字符串。 目标是忽略该字符串后的所有内容。 我当前的代码读取整个文本文件并返回一个Enumerable结果文件名,其中找到了一个术语。 var searchResults = files.Where(file => File.ReadAllText(file.FullName).Contains(searchTerm)).Select(file => file.FullName); 是否有可能在该特定字符串之后合并忽略所有行? 性能非常重要,因为有数千个文件。