Tag: linq

在LINQ列表中查找项目?

在这里我有一个简单的例子来查找string列表中的项目。 通常我使用循环或匿名委托做到这一点: int GetItemIndex(string search) { int found = -1; if ( _list != null ) { foreach (string item in _list) // _list is an instance of List<string> { found++; if ( string.Equals(search, item) ) { break; } } /* use anonymous delegate string foundItem = _list.Find( delegate(string item) { found++; return string.Equals(search, item); […]

entity framework中的连接子句中的一个expression式的types不正确

在尝试执行此查询时: var query = from dpr in ctx.DPR_MM join q in ctx.QOT on dpr.DPR_QOT_ID equals qot_id join p in ctx.PAY_MM on new { q.QOT_SEC_ID, dpr.DPR_TS } equals new { p.PAY_SEC_ID, p.PAY_DATE } where q.QOT_ID = qot_id select new { dpr.dpr_ts, dpr.dpr_close, pay.First().pay_dividend }; 我得到这个错误: join子句中的一个expression式的types不正确。 在“join”的调用中,types推断失败。 QOT_SEC_ID是decimaltypes, PAY_SEC_ID是int32 。 我不能在桌上改变它。 无论我做什么,我都无法在模型的属性中改变它。 我试图转换这样的types: join p in […]

entity framework/ Linq EXpression从string转换为int

我有一个像这样的expression: var values = Enumerable.Range(1,2); return message => message.Properties.Any( p => p.Key == name && int.Parse(p.Value) >= values[0] && int.Parse(p.Value) <= values[1]); 这编译好,但是当它碰到数据库时,它会抛出exception'LINQ to Entities does not recognize the method 'Int32 Parse(System.String)' method, and this method cannot be translated into a store expression ' 如果我不做parsing和值是一个string[]我不能然后使用>=和<=操作符的string。 p.Value是一个保存各种值的string,但在这种情况下它是int 有没有一种方法,我可以查询数据库做这种之间的语句?

LINQ:点符号与查询expression式

一般来说,我开始使用LINQ(到目前为止XML和SQL)。 我已经看到,有时有两种或两种以上的方法来达到相同的结果。 以这个简单的例子来说,据我所知,两者都返回完全一样的东西: SomeDataContext dc = new SomeDataContext(); var queue = from q in dc.SomeTable where q.SomeDate <= DateTime.Now && q.Locked != true orderby (q.Priority, q.TimeCreated) select q; var queue2 = dc.SomeTable .Where( q => q.SomeDate <= DateTime.Now && q.Locked != true ) .OrderBy(q => q.Priority) .ThenBy(q => q.TimeCreated); 除了我在语法上可能犯的错误或缺失的参数或差异之外,这个想法是有两种expression同一事物的方式; 我知道第一种方法有一些局限性,“点符号”更完整,除此之外,还有其他的优点吗?

如何从使用LINQ to SQL的c#方法返回匿名types

可能重复: LINQ to SQL:返回匿名types? 我有一个标准的LINQ to SQL查询,它以匿名types(包含大约6个不同数据types的数据列)的forms返回数据。 我想通过返回给方法调用者,或者将其赋值给包含该方法的对象的属性,使该返回的对象可用于程序的其他部分。 我怎么能这样做,因为它是一个匿名types(“var”)? 编辑 – 这是代码: using (ormDataContext context = new ormDataContext(connStr)) { var electionInfo = from t1 in context.elections join t2 in context.election_status on t1.statusID equals t2.statusID select new { t1, t2 }; }

正确的Linq where子句

我在日常生活中写了相当多的linq,但大多是简单的陈述。 我注意到,在使用where子句的时候,有很多方法可以写出来,每个都有相同的结果,据我所知。 例如; from x in Collection where x.Age == 10 where x.Name == "Fido" where x.Fat == true select x; 至less就结果而言似乎相当于此: from x in Collection where x.Age == 10 && x.Name == "Fido" && x.Fat == true select x; 那么除了语法,还有其他的区别吗? 如果是这样,什么是首选的风格,为什么?

如何查看LINQ生成的SQL语句?

它是如何使用ObjectQuery方法完成的?

为什么。包容很慢? 通过主键获取多个实体的最有效方法?

什么是通过主键select多个实体最有效的方法? public IEnumerable<Models.Image> GetImagesById(IEnumerable<int> ids) { //return ids.Select(id => Images.Find(id)); //is this cool? return Images.Where( im => ids.Contains(im.Id)); //is this better, worse or the same? //is there a (better) third way? } 我意识到我可以做一些性能testing来进行比较,但是我想知道是否有比这两个更好的方法,并且正在寻找一些关于这两个查询之间的区别是什么的启发,如果有的话,一旦他们“翻译”。

最快的方法来比较两个List <>

什么是比较两个大型(> 50.000项)最快(也是最less的资源密集型),结果有两个列表如下: 在第一个列表中出现但不在第二个列表中的项目 在第二个列表中显示但不在第一个列表中的项目 目前我正在使用列表或IReadOnlyCollection并在linq查询中解决此问题: var list1 = list.Where(i => !list2.Contains(i)).ToList(); var list2 = list2.Where(i => !list.Contains(i)).ToList(); 但是这并不如我所愿。 任何想法使这个更快,更less的资源密集型,因为我需要处理大量的名单?

使用LINQ对List <string>中的所有string进行Concat

有没有任何简单的LINQexpression式来连接我的整个List<string>集合项目与一个带有分隔符字符的单个string ? 如果集合是自定义对象而不是string呢? 想象一下,我需要连接在object.Name 。