小编Jus*_*der的帖子

使用sql linq查询的结果导致数据库查询两次

我查询数据库并使用以下两种方法将结果推送到控制台和文件:

var result = from p in _db.Pages
             join r in rank on p.PkId equals r.Key
             orderby r.NumPages descending
             select new KeyNameCount
                                    {
                                        PageID = p.PkId,
                                        PageName = p.Name,
                                        Count = r.NumPages
                                    };

WriteFindingsToFile(result, parentId);
WriteFindingsToConsole(result, parentId);
Run Code Online (Sandbox Code Playgroud)

当用作两个方法调用中的参数时,IEnumerable <T>,而不是IQuerable <T>用作结果的参数类型.

在两次调用中,结果都在foreach中迭代.这导致针对数据库的两个相同的调用,每个方法一个.

我可以将这两个方法重构为一个并且只使用一个foreach,但这很快就会变得非常难以维护(添加写入html,写入xml等)

我很确定这是一个非常常见的问题,但使用谷歌并没有让我更聪明,所以我转向你们:-)

c# linq-to-sql

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

如何确定哪些枚举项在整数值中"隐藏"

我们有一个数据库,其中一列包含复合枚举整数值.我们需要删除特定枚举整数值的所有这些值(如果有的话),但保留其余值.

[Flags]
public enum MyEnum
{
    Enum1 = 1,
    Enum2 = 2,
    Enum3 = 4,
    Enum4 = 8,
}
Run Code Online (Sandbox Code Playgroud)

在我们找到的数据库中

Row    MyEnumSettings
1      3                   (Enum1 | Enum2)
2      8                   (Enum4)
3      6                   (Enum2 | Enum3)
4      14                  (Enum2 | Enum3 | Enum4)
Run Code Online (Sandbox Code Playgroud)

我们想要从每一行中删除Enum3并最终结束

Row    MyEnumSettings
1      3                   (no change)
2      8                   (no chnage)
3      2                   (removed Enum3)
4      10                  (removed Enum3)
Run Code Online (Sandbox Code Playgroud)

我们可以使用Enum.IsDefined来检查整数是否是枚举的一部分(不确定它是否适用于复合整数值..).但是,我们如何检查给定的整数值是否包含枚举的特定部分?

c# enums

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

用于从数据库中检索过滤器值的重构方法

我正在使用.Net Framework 4,mvc 3和实体框架(最新稳定版)

在索引页面上,我希望能够过滤每一列.LINQ使用distinct()方法为每列检索过滤器值.我没有找到一种很好的方法来重用为每列检索这些值的方法 - 它们基本相同,唯一区分它们的是使用的列名,因此使用一种方法而不是几种方法会很好.

public List<string> GetLevels()
{
    return _db.Logs.Select(l => l.Level).Distinct().ToList();
}

public List<string> GetOrders()
{
    return _db.Logs.Select(l => l.Order).Distinct().ToList();
}
Run Code Online (Sandbox Code Playgroud)

如何使用我想从中检索数据的列名注入lambda表达式?像这样的东西:

public List<string> GetFilterValues(string columName)
{
    return _db.Logs.Select(l => l.columnName).Distinct.ToList();
}
Run Code Online (Sandbox Code Playgroud)

c# refactoring entity-framework linq-to-sql

0
推荐指数
1
解决办法
91
查看次数

标签 统计

c# ×3

linq-to-sql ×2

entity-framework ×1

enums ×1

refactoring ×1