我正在努力掌握LINQ。最困扰我的事情是,即使我更好地理解了语法,我也不想无意中牺牲性能来换取表现力。
对于“有效的LINQ”,它们有没有好的信息或书籍的集中存储库?如果做不到这一点,您个人最喜欢的高性能LINQ技术是什么?
我主要关注LINQ to Objects,当然也欢迎所有关于LINQ to SQL和LINQ to XML的建议。谢谢。
我看到一些代码是linq用于遍历c#中的字典对象。我以为linq只是针对数据库的linq to sql。上面提到的代码中使用的linq是一个select类型的语句,没有数据库。
有没有linq没有linq to sql的数据库?没有"sql“的"linq”会一直存在吗?我之所以这样问,是因为人们谈论实体框架将linq替换为sql,但EF肯定不会像我所描述的那样取代linq,对吧?您可以在字典对象上使用ef吗?希望得到大家的评论。谢谢。
这是我看到它的地方:
当您使用构造函数将Linq2sql对象转换为域对象时,linq2sql似乎不知道如何构造TSQL。例如:
from c in db.Companies
select new Company (c.ID, c.Name, c.Location).Where(x => x.Name =="Roy");
但是当使用可设置的属性时,这是可以的。
from c in db.Companies
select new Company { ID = c.ID, Name = c.Name, Location = c.Location }.Where(x => x.Name ==
我在LinqPad中使用NorthWind.sdf成功运行了以下语句:
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.ShipViaOrders.Count()
}
同时,我没有用LinqPad中的Odata Service ()运行类似的语句:
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.Orders.Count
有没有办法创建一个linq to sql查询来按Take参数分组?
例如,如果我有一个表,其中有20条记录,其中一个唯一ID值从1到20,我希望获得一组由5条记录组成的记录组:
Group 1: 1,2,3,4,5
Group 2: 6,7,8,9,10
....
我可以想到两种方法来做这件事。
通过进行5个查询:第一个查询计算记录总数,接下来的4个查询是select查询,其中我跳过5个,取5个。
通过执行一次查询,使用内部索引循环遍历结果,并创建具有5个组的对象
有没有一种更优雅的方式来使用linq to sql来做到这一点?
我只是想知道是否有可能在没有linq或ORM的情况下进行延迟加载。我需要做的一些查询是不适合ORM的。我还需要在方法之间传递查询。此外,我找不到任何微型orm来实现这一点。有没有办法做到这一点?
var q = "Select Name from Test1"
现在,我们必须添加OR、or、AND、IN或其他值
此查询将被传递给不同的方法进行过滤。有没有办法使用微ORM或AD Hoc SQL查询来做到这一点?
在我的C++应用程序中,我想调用一个Python脚本来执行一些处理工作。我在谷歌搜索过,发现有两种方法可以做到这一点:
(1). use the `system` command. Just like this, `system('python myscript.py');`
(2). use the `PyRun_SimpleString("execfile('myscript.py')");`
我想问一问,哪种方式更好,有没有更好的方法来做这项工作?
谢谢。
我有一个对象模型,有点像这样:
public class Foo
{
public int Id {get;set;}
public string FooName {get;set;}
}
public class Bar
{
public int Id {get;set;}
public Foo Foo {get;set;}
}
它们以典型的一对多方式与数据库中的表相对应。
使用Linq to NHibernate根据它们的Foo.Id属性查询Bars (这应该只是查询Bars表中的FoodId外键),生成带有连接的FoodId!
有人知道为什么会这样吗?这是标准的NHib
我有一个域模型,它包含如下内容:
public class Customer : EntityBase<Customer>, IAggregateRoot
{
public IList<Comment> Comments { get; set; }
}
public class Comment : EntityBase<Comment>
{
public User CreatedBy { get; set; }
public bool Private { get; set; }
}
我有一个服务层,我通过它来检索这些实体,传递给该服
对于这个问题,我使用了DbLinq,它应该相当于Linq2SQL。我需要生成一个Linq2SQL查询,在该查询中指定我希望在运行时返回的列。我可以使用动态Linq扩展方法来实现这一点,但是我不知道如何提取结果。
string someProperty = "phonenumber";
string id = "1234";
Table<MyClass> table = context.GetTable<MyClass>();
var queryResult = (from item in table where item.Id == i
我正在学习LINQ to Entities和WPF,所以如果我把一些术语弄错了,请原谅。我有一个包含客户端的模型,我希望用户能够一次批量输入多达20个客户端(这将由纸质列表上的数据输入人员完成,因此我希望避免输入和保存一个)。
我计划在我的模型中添加20个新的客户端,并绑定一个数据网格/列表框。
在LINQ中,如何选择新添加到模型中的记录?我可以相信某些字段是空白的,但是有没有更好的方法呢?或者,有没有其他方法可以做到这一点?
我已经使用Entity Framework几个星期了。多年来,我一直在使用Linq-Objects和Linq-SQL。很多时候,我喜欢这样写linq语句:
from student in db.Students
from score in student.Scores
where score > 90
select student;
对于其他形式的linq,这将返回至少有一个分数大于90的不同学生。但是,在EF中,对于每个大于90的分数,此查询都会返回一个学生。
有没有人知道这种行为是否可以在单元测试中复制?这有没有可能是EF中的一个bug?
在我的解决方案中,我有不依赖于数据库的单元测试,而是具有外部依赖关系的模拟和集成测试。
当我使用mock进行单元测试时,使用的是LINQ to Object。当集成测试或实际程序运行时,使用LINQ to Entities,它比LINQ to Object更严格。
有没有办法在我的单元测试中复制LINQ to Object更严格的行为?
有没有办法使用Linq来做以下事情:
foreach (var c in collection)
{
if (c.Condition == condition)
{
c.PropertyToSet = value;
// I must also check I only set this value to one minimum and only one element.
}
else
{
c.PropertyToSet = otherValue;
}
}
为了清楚起见,我希望遍历集合中的每个对象,
我有两个对象。
class User{
public int id{get;set;}
public string name{get;set;}
}
class UserProtectedDetails{
public string name{get;set;}
}
如何将List<User>转换为List<UserProtectedDetails>
我知道如何在反射中做到这一点,但是有没有Linq或其他.NET方式呢?
这里的一切都被重新命名和简化了。
我有一个父类(normalThing),其方法显示有关实例的一些数据,另一个类(specialThing)扩展父类以包含另一个实例变量(addedPrice)。
我希望我的显示方法能够说明实例是否是specialThing,如果是,则显示addedPrice。但是因为addedPrice只属于specialThing,所以我不知道如何对它进行编码!
void displayInfo(){
StringBuilder d = new StringBuilder("Am I special? ");
if(this instanc
我想连接两个表,但是两个连接字段的格式不同:一个是小数,一个是字符串。
Convert.ToDecimal()不允许我使用Linq命令将十进制字段转换为字符串,或者使用Linq命令将字符串字段转换为十进制。
var tmp = from c in gge.GiftCards
join p in gge.Customers
on c.OwnerId equals p.customer_Key
into g
from o in g.DefaultIfEmpty()
select new MyCar
我正在为一个项目编写dll,我刚刚开始使用LINQ to SQL,并在将所有方法移动到这个新的DLL之后。我发现我不能访问DataContext,因为它被处理了,我理解其中的原因,但我不确定我如何才能访问我的主项目方法的查询结果,所以:
我在DLL中的方法
public static IEnumerable<Problem> GetProblemsNewest(int howMuch)
{
using (ProblemClassesDataContext context = new ProblemClassesDataContext())
所以,我想知道我会从一个RESTful uri GET请求中得到多少结果。在这一点上我不知道有什么方法可以做到这一点。有没有办法做到这一点?由于REST只是抛出属性,我不知道它是否能够计算其结果,但它可以跳过结果并获取结果的子集。
有人有什么建议吗?
哦,我的设置是一个LINQ to SQL,它填充一个可查询的泛型列表。数据服务使该列表可用。我尝试获取列表中的计数,但我总是得到数据库的最大行数,而这并不是我想要的结果。
我想在使用LINQ时实现MVC (特别是LINQ到实体)。我这样做的方式是让Controller使用LINQ生成(或调用生成的东西)结果集,然后返回到View以显示数据。问题是,如果我这样做了:
return (from o in myTable select o);
所有的列都是从数据库中读取的,即使是我不想要的(可能有几十个)。更重要的是,我不能这样做:
return (from o in myTable select new { o.column });
因为没有办法使匿名类型安全!我知道在3.5 (不是干净的.)中没有很好的、干净的方法,但是呢?有没有什么计划的,甚至是提议的?没有鸭类