小编gun*_*erz的帖子

LINQ除了如何工作?

可能重复:
LINQ在两个列表中找到差异

我想找到2系列之间的区别.所以我Except在LINQ语句中使用.但Except似乎只有在第一个集合长于第二个集合时才有效.例如,即使2个集合不同,也不会返回任何结果.

double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };

IEnumerable<double> onlyInFirstSet = numbers2.Except(numbers1);
Run Code Online (Sandbox Code Playgroud)

任何人都可以确认是否是这种情况?如果是这样,在编写查询之前是否必须检查集合长度,因为我不知道哪个集合在编译时会更大.

编辑

我想我的问题并不清楚.我不关心哪个集合包含什么.我只是想找到两个系列之间的区别.我怎样才能做到这一点?

linq except

31
推荐指数
3
解决办法
5万
查看次数

存储树结构的集合是什么?

我想在组合中存储组织结构图.我认为树数据结构最适合我的需要,因为我需要向一个节点添加多个节点.

LinkedList 如果我理解正确的话,只提供一个节点添加到另一个节点.

我看过C5 treeset集合,但它似乎没有Add()方法向一个节点添加2个以上的节点.

我也Treeview从Windows窗体库查看了类,但我不想将Windows窗体dll添加到我的项目中,因为我正在构建服务层应用程序.(或者没事?)

我不想写自己的树集合类,如果已经有第三方提供的那个?

有什么建议吗?

谢谢

c# collections tree

11
推荐指数
1
解决办法
2万
查看次数

C#Dynamic Linq Variable Where子句

我正在关注Scott Gu的文章,以创建一个动态的LINQ http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library的.aspx

他举了一个例子:

Expression<Func<Customer, bool>> e1 = 
    DynamicExpression.ParseLambda<Customer, bool>("City = \"London\"");  
Expression<Func<Customer, bool>> e2 =
    DynamicExpression.ParseLambda<Customer, bool>("Orders.Count >= 10");  
IQueryable<Customer> query =
    db.Customers.Where("@0(it) and @1(it)", e1, e2);  
Run Code Online (Sandbox Code Playgroud)

这在我的情况下工作正常.但是,我有未知数量的where子句,这是在运行时决定的.

任何人都可以告诉我如何创建一个通用的Where子句,例如

Where("@0(it) and @1(it) and... @n(it)", e1, e2, ... en);
Run Code Online (Sandbox Code Playgroud)

谢谢

c# linq

7
推荐指数
1
解决办法
2万
查看次数

返回错误并抛出异常

如果我遇到特定错误并在这种情况下返回一个对象,我需要抛出异常.

所以我想做这样的事情:

if(error)
return obj;
throw new FaultException(string.Format("Error found with ID={0}", ID))
Run Code Online (Sandbox Code Playgroud)

这显然不会起作用,因为return会阻止抛出异常.

任何人都可以建议什么是实现这一目标的最佳途径.我可以以某种方式传递异常中的对象吗?

谢谢

c# exception

7
推荐指数
2
解决办法
2372
查看次数

在sql存储过程中传递表名

是否可以将表名作为输入参数传递给存储过程?

例如:

create procedure test
@tablename char(10)
as
begin
select * from @tablename
end
go
Run Code Online (Sandbox Code Playgroud)

我知道这不起作用.那么,如果我想将表名传递给存储过程,最好的方法是什么?

非常感谢

t-sql stored-procedures

5
推荐指数
1
解决办法
2万
查看次数

实体框架查找外键

我想在我的实体模型中找到实体的所有外键.

我使用以下内容来获取实体的所有属性列表:

var workspace = _entities.MetadataWorkspace; 
var entityType = workspace.GetItems<EntityType>(DataSpace.CSpace).FirstOrDefault(e => e.Name == tablename);
var keyNames = entityType.Members.Select(k => k.Name);
Run Code Online (Sandbox Code Playgroud)

有没有办法只找到那些具有外键关联的属性?还有与之关联的参考实体中的属性?

entity-framework

4
推荐指数
1
解决办法
3169
查看次数

实体框架更新检查记录是否已更改

我正在使用EF更新数据库表.

它是连接模式下的一个简单场景.

我得到了我想要更新的行

var order = from o in Orders
        where o.ID = 1
        select o;
Run Code Online (Sandbox Code Playgroud)

然后我将记录更新为:

order.FirstName = "First";
order.LastName = "Last";
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

它工作正常.EF检查字段是否已更改,并仅在其为新值时更新字段.我在我的SQL服务器上启用了CDC,以检查如果值没有更改,EF不会重写到数据库.

现在我想把这个检查放在我的代码中以获得额外的逻辑,即我希望EF告诉我何时更新记录,何时不记录(因为值没有改变).任何人都可以告诉我是否有办法?

我不想手动检查每个字段,因为我有很多要比较的字段.

谢谢

entity-framework

4
推荐指数
2
解决办法
8373
查看次数

LINQ'AsEnumerable'和实体框架

我正在编写类似于以下内容的LINQ查询:

var test = from o in dbcontext.Orders.AsEnumerable()
        where o.ID==1
        select new Order
        { 
             Name = GetName(o.ID)
        };
Run Code Online (Sandbox Code Playgroud)

为了在LINQ查询中调用外部函数,我AsEnumerable()在查询中使用.

我理解通常在ToList()调用枚举函数之前不会执行查询.但在这里,我呼吁枚举查询.

任何人都可以告诉我,这样使用是否被认为是不好的做法AsEnumerable()?与创建查询ToList() 调用相比,它会在性能上受损吗?

c# linq performance entity-framework

4
推荐指数
1
解决办法
1453
查看次数

如何启用Azure应用程序日志记录?

我在Azure上托管了一个网站.我使用Trace.Error将我的所有错误日志输出到文件系统.但是,当我在Azure网站上启用应用程序日志记录时,它仅保持启用12小时.这篇文章也证实了这一点:http://www.hanselman.com/blog/StreamingDiagnosticsTraceLoggingFromTheAzureCommandLinePlusGlimpse.aspx

现在我想继续无限期地存储错误日志(即直到我的网站上线).我不确定我是否错过了这一点.如何永久保持日志记录?

azure asp.net-mvc-5

4
推荐指数
1
解决办法
199
查看次数

EntityFunctions的绝对值

我在我的LINQ查询中使用EntityFunctions类:

var a = dbContext.Where(x=>EntityFunctions.DiffMinutes(dateA,dateB)<1)
Run Code Online (Sandbox Code Playgroud)

但是我想要差异的绝对值,所以我不必担心哪个日期更大.

任何人都可以建议如何做到这一点.

entity-framework

3
推荐指数
1
解决办法
2561
查看次数