Tag: linq

LINQPad,使用多个数据上下文

我经常比较不同数据库中的表中的数据。 这些数据库不具有相同的模式。 在TSQL中,我可以使用DB> user> table结构(DB1.dbo.Stores,DB2.dbo.OtherPlaces)来引用它们来提取数据进行比较。 我非常喜欢LINQPad的概念,但我似乎无法轻易地从同一组语句中的两个不同的数据上下文中获取数据。 我已经看到人们build议简单地改变连接string以将数据从其他源拉入当前模式,但是,正如我所提到的,这是不行的。 我只是跳过常见问题页面吗? 这似乎是一个相当常规的程序,让我无法使用。 在“简单”的世界中,我希望能够简单地引用LINQPad创build的types化的数据上下文。 那么我可以简单地说: DB1DataContext db1 = new DB1DataContext(); DB2DataContext db2 = new DB2DataContext(); 并从那里工作。

我怎样才能拒绝Linq到SQL的DataContext中的所有更改?

在Linq到SQL的DataContext上,我可以调用SubmitChanges()来提交所有更改。 我想要的是以某种方式拒绝datacontext中的所有更改,并回滚所有更改(最好不去数据库)。 这可能吗?

错误:“指定的LINQexpression式包含对与不同上下文关联的查询的引用”

我收到来自LINQ查询标题中显示的错误,该查询包含来自两个不同edmx文件的两个表。 这是查询: var query = (from a in db1.Table1 join b in db1.Table2 on a.Id equals b.Id orderby a.Status where b.Id == 1 && a.Status == "new" select new { Id = a.Id, CompanyId = (from c in db2.Company where s.Id == a.Id select new { c.CompanyId }) }); db1和db2是与两个不同的edmx文件关联的上下文。 我怎样才能克服这个错误?

LINQ to Entities不支持LINQexpression式节点types“ArrayIndex”

public List<string> GetpathsById(List<long> id) { long[] aa = id.ToArray(); long x; List<string> paths = new List<string>(); for (int i = 0; i < id.Count; i++) { x = id[i]; Presentation press = context.Presentations.Where(m => m.PresId == aa[i]).FirstOrDefault(); paths.Add(press.FilePath); } return paths; } 在这个代码中我有一个exachtion: The LINQ expression node type 'ArrayIndex' is not supported in LINQ to […]

在OrderBy中使用LINQ自定义sorting逻辑

什么是正确的方式来sortingstring的列表,我希望项目以下划线'_'开头,在列表的底部,否则一切都按字母顺序排列。 现在我正在做这样的事情, autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a )

从IEnumerable <T>中删除项目

我有2个IEnumerable集合。 IEnumerable<MyClass> objectsToExcept 和 IEnumerable<MyClass> allObjects. objectsToExcept可能包含来自allObjects对象。 我需要从allObjects对象中objectsToExcept 。 例如: foreach (var myClass in objectsToExcept) { allObjects.Remove(myClass); } 要么 allObject.Except(objectsToExcept) 但它不起作用。 方法执行后的计数表示没有项目被删除。

从ac#Dictionary中删除多个匹配谓词的项目的最佳方法?

我需要从字典中删除多个项目。 一个简单的方法如下: List<string> keystoremove= new List<string>(); foreach (KeyValuePair<string,object> k in MyCollection) if (k.Value.Member==foo) keystoremove.Add(k.Key); foreach (string s in keystoremove) MyCollection.Remove(s); 我不能直接删除foreach块中的项目的原因是,这将抛出一个exception(“集合被修改…”) 我想要做以下事情: MyCollection.RemoveAll(x =>x.Member==foo) 但是Dictionary <>类不像List <> Class那样公开一个RemoveAll(Predicate <> Match)方法。 什么是最好的方式(既明智又明智)做到这一点?

Linq for NHibernate和抓取加载模式

有没有办法设置fetchmode渴望多个对象使用linq nhibernate。 似乎有一个扩展方法,只允许我设置一个对象。 不过,我需要将其设置为多个对象。 这可能吗? 谢谢

在c#/ LINQ中将数组转换为string的最短方法

closures此问题的确切副本。 我有一个数组/元素列表。 我想将其转换为一个string,由自定义分隔符分隔。 例如: [1,2,3,4,5] => "1,2,3,4,5" 什么是最短/最狡猾的方式在c#中做到这一点? 我一直这样做,循环列表并检查当前元素是否不是最后一个添加分隔符之前。 for(int i=0; i<arr.Length; ++i) { str += arr[i].ToString(); if(i<arr.Length) str += ","; } 有没有一个LINQ函数可以帮我写更less的代码?

传递一个lambdaexpression式来代替IComparer或IEqualityComparer或任何单一方法接口?

我碰巧看到一些代码,这个家伙传递一个lambdaexpression式到一个ArrayList.Sort(IComparer在这里)或一个IEnumerable.SequenceEqual(IEnumerable列表,IEqualityComparer在这里),其中IComparer或IEqualityComparer的预期。 我不能确定我是否看到它,或者我只是在做梦。 而且我似乎无法find任何这些集合中接受Func <>或其方法签名委托的扩展。 有没有这样的重载/延伸方法? 或者,如果没有,是否有可能像这样混淆,并传递一个algorithm(读委托)在哪里一个单一的方法接口预计? 更新谢谢大家。 我也这么想。 我一定是在做梦。 我知道如何写一个转换。 我只是不确定是否曾经见过这样的事情,或者只是以为我曾经见过这样的事情。 还有一个更新看,在这里,我find了一个这样的例子。 毕竟,我并不是在做梦。 看看这个人在这里做什么 。 是什么赋予了? 这里是另一个更新:好的,我明白了。 这家伙正在使用Comparison<T>超载。 尼斯。 不错,但是完全容易误导你。 不错,但是。 谢谢。