Tag: linq

LINQ查询子句的顺序是否会影响entity framework的性能?

我正在使用Entity Framework(代码优先),并且在我的LINQ查询中查找指定子句的顺序会对性能产生巨大影响,例如: using (var db = new MyDbContext()) { var mySize = “medium”; var myColour = “vermilion”; var list1 = db.Widgets.Where(x => x.Colour == myColour && x.Size == mySize).ToList(); var list2 = db.Widgets.Where(x => x.Size == mySize && x.Colour == myColour).ToList(); } 如果(罕见)颜色子句在(通用)大小子句之前,它的速度很快,但反过来它的速度要慢一些。 该表有几百万行,所讨论的两个字段是nvarchar(50),因此没有标准化,但它们都是索引的。 这些字段以代码优先方式指定,如下所示: [StringLength(50)] public string Colour { get; set; } [StringLength(50)] public […]

如何将LINQ数据绑定到下拉列表

此代码的最后两行无法正常工作 – 结果将从LINQ查询返回。 我只是不确定如何成功地将结果中指示的列绑定到下拉列表的textfield和valuefield: protected void BindMarketCodes() { List mcodesList = new List(); LINQOmniDataContext db = new LINQOmniDataContext(); var mcodes = from p in db.lkpMarketCodes orderby 0 select p; mcodesList = mcodes.ToList(); //bind to Country COde droplist dd2.DataSource = mcodesList; dd2.DataTextField = mcodesList[0].marketName; dd2.DataValueField = mcodesList[0].marketCodeID.ToString(); }

在C#LINQ中实现RANK OVER SQL子句

我需要实现以下T-SQL子句…. RANK() OVER (PARTITION BY a.CategoryKey ORDER BY (x.Rate * @BASE_RATE ) DESC )as Rank …在C#LINQ中。 到目前为止,我想出的是…… var rank = data.GroupBy(d => d.CategoryKey) .Select(group => group.OrderByDescending(g => g.Rate * @BAES_RATE) 我想这会给我按照率* BASE_RATE排序的每个等级分区。 但我真正需要的是单行的单个等级 ,这是更大结果中的子查询。 所以我正在使用的完整SQL查询就像…. SELECT a.Rate, a.CategoryKey, a.ID, . . . RANK() OVER (PARTITION BY a.CategoryKey ORDER BY (x.Rate * @BASE_RATE ) DESC )as […]

使用LINQ选择单个列表的所有唯一组合,不重复

我有一个数字列表,我需要使用LINQ查询创建列表中数字的每个可能的唯一组合,而不重复。 因此,例如,如果我有{ 1, 2, 3 } ,则组合将是1-2和2-3 。 我目前使用两个for循环,如下所示: for (int i = 0; i < slotIds.Count; i++) { for (int j = i + 1; j < slotIds.Count; j++) { ExpressionInfo info1 = _expressions[i]; ExpressionInfo info2 = _expressions[j]; // etc… } } 是否有可能将这两个for循环转换为LINQ? 谢谢。

C#Linq to XML检查元素是否存在

我有一个XML文档如下: “+447528349828” “09/06/24 13:35:01” “Stop” “+447528349828” “09/06/24 13:35:01” “Stop” 我正在尝试检查文档中是否存在父SMS节点的数字子节点(出于validation目的,以避免插入重复数据)。 关于潜在解决方案的任何建议? 编辑:元素将与输入字符串进行比较。 例如if(inputNumber == xmlDocNumber){//不插入新元素}

比较两个列表以搜索常见项目

List one //1, 3, 4, 6, 7 List second //1, 2, 4, 5 如何从第二个列表中的一个列表中获取所有元素? 在这种情况下应该是:1,4 我当然谈论没有foreach的方法。 而是linq查询

有没有一种简单的方法可以使用LINQ合并两个有序序列?

特定 IEnumerable first; IEnumerable second; 并且first和second都由比较器Func排序,它返回0表示相等,-1表示第一个为“较小”,1表示第二个为“较小”。 是否有一种直接的方式使用LINQ来合并两个序列,使得结果序列也由相同的比较器排序? 我们目前正在使用手工制作的算法,但是直接LINQ语句的可读性会更好。

entity framework中的条件包含()

我已经看到了类似问题的一些答案,但我似乎无法解决如何将答案应用于我的问题。 var allposts = _context.Posts .Include(p => p.Comments) .Include(aa => aa.Attachments) .Include(a => a.PostAuthor) .Where(t => t.PostAuthor.Id == postAuthorId).ToList(); 附件可以由作者(类型作者)或贡献者(类型贡献者)上传。 我想要做的是,只获取附件所有者属于作者类型的附件。 我知道这不起作用并给出错误: .Include(s=>aa.Attachments.Where(o=>o.Owner is Author)) 我在这里读过Filtered Projection 编辑 – 链接到文章:: http://blogs.msdn.com/b/alexj/archive/2009/10/13/tip-37-how-to-do-a-conditional-include.aspx , 但我无法理解它。 我不希望在最终的where子句中包含filter,因为我想要所有post,但我只想检索属于作者的那些post的附件。 编辑2: – 请求发布模式 public abstract class Post : IPostable { [Key] public int Id { get; set; } [Required] public DateTime […]

linq to sql递归查询

EmployeeId Name ManagerId —————————— 1 A null 2 B null 3 C 1 4 D 3 5 E 2 只是使用这个表,如何编写linq查询(使用linq to sql)来递归获取父数据。 例如,如果选择的雇主ID为4,则应该给出Id:4,3,1的雇员列表 谢谢。

如何使用LINQ从字符串中获取重复字符数组?

如果我有以下字符串: string s = “abcdefghab”; 那么我如何得到一个字符串(或char []),它只包含使用C#和LINQ在原始字符串中重复的字符。 在我的例子中,我希望最终得到“ab”。 虽然没有必要,但我试图在一行LINQ中做到这一点,到目前为止已经提出: s.ToCharArray().OrderBy(a => a)…