小编Mar*_*usz的帖子

sql查询中的最大参数数

有一段时间我会尝试使用LINQ.枚举集合并在我的代码中更改其某些属性的典型方法如下所示:

ATDataContext dc = new ATDataContext(Settings.connection_string);

int[] col = ListViewClass.getListViewSelectedPositionTags(listView);

try
{
    foreach (var item in col)
    {
        var ctx = (from r in dc.MailingLists
                   where r.ID == item
                   select r).Single();

        ctx.Excluded = 'Y';
        ctx.ExcludedComments = reason;
    }

    dc.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

有一段时间有一个建议来做到这一点...似乎更聪明的方式:

var ctx = from r in dc.MailingLists
    where col.Contains(r.ID)
    select r;

foreach (var item in ctx)
{
    item.Excluded = 'Y';
    item.ExcludedComments = reason;
}

dc.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

Iit在很多层面上都很有意义,我喜欢这个解决方案.它比第一个更聪明,更快捷.

我已经在生产环境中使用了这个解决方案一段时间了.

几周后,我在搜索应用程序日志文件时看到了什么,并看到了这一点:

"传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确.此RCP请求中提供的参数太多.最大值为2100."

LINQ to SQL转换where col.Contains(r.ID)IN子句看起来像:
WHERE ID …

c# linq-to-sql

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

Linq和包含

第一个有效的例子:

public class Test
{
    public int ID;
    public string Name;
}

List<int> list1 = Load1();
List<Test> list2 = Load2();

var query = list2.Where(c => list1.Contains(c.ID));
Run Code Online (Sandbox Code Playgroud)

现在我想使用两个对象列表作为源,并获取具有相同成员ID值的对象列表.

List<Test> list1 = Load2();
List<Test> list2 = Load2();
Run Code Online (Sandbox Code Playgroud)

以下不编译:

var query = list2.Where(c => **list1.ID.Contains**(c.ID));
Run Code Online (Sandbox Code Playgroud)

我知道这是错的,但是为了更好的理解而把它放在这里.我很感激有人向我展示正确的道路:-)

关心马里乌斯

c# linq contains

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

t-sql结果到文件中

今天我花了几个小时没有运气.我需要做的是编写一个t-sql查询,该查询将在SSMS中执行,并且应该将输出保存到文件中.我有对sql server 2008 r2以及操作系统的完全管理员访问权限(我相信Win 2008 Server)

我不能使用命令行,批处理文件等.它需要直接从SSMS完成,作为执行t-sql脚本.

它甚至不必漂亮:-)它只需要做这个工作.

我非常感谢任何帮助.

关心马里乌斯

t-sql

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

AutoMapper 自定义类型转换器 ITypeConverter 和映射嵌套对象

我正在尝试映射 C# 字典集合

IDictionary<string, object>
Run Code Online (Sandbox Code Playgroud)

转换为 MATLAB 中使用的特定对象(MWStructArrayMWCellArray)。该集合包含已解析的 JSON 结构。

为此,我使用 AutoMapper 及其ITypeConverter实现,目前如下所示:

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<IDictionary<string, object>, MWStructArray>().ConvertUsing(new MWStructArrayTypeConverter());
});
Mapper.AssertConfigurationIsValid();


public class MWStructArrayTypeConverter : ITypeConverter<IDictionary<string, object>, MWStructArray>
{
    public MWStructArray Convert(ResolutionContext context)
    {
        var dictionary = context.SourceValue as Dictionary<string, object>;
        var mwStructArray = new MWStructArray(1, 1, dictionary.Keys.ToArray());

        foreach (KeyValuePair<string, object> entry in dictionary)
        {
            mwStructArray[entry.Key, 1] = entry.Value.ToString();
        }

        return mwStructArray;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的字典保存单个值,如 int、string、float 等,但它可以保存另一个嵌套字典或列表数组。IE

IDictionary<string, IDictionary<string, object>>
Run Code Online (Sandbox Code Playgroud)

或者

IDictionary<string, List<object>> …
Run Code Online (Sandbox Code Playgroud)

c# performance matlab json automapper

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

C#和Access 2000

我开发了一个网络应用程序,在我公司使用了近几年.在开始时,它管理有关用户,权利等的信息.随着时间的推移,它与其他功能一起成长.它增长到了我有桌子的地步,比方说10-20列,甚至20,000到40,000条记录.

我一直听说Access不适合多用户环境.第二件事是,当我尝试通过网络从表中读取一些记录时,必须将整个表拉到客户端.之所以发生这种情况,是因为服务器端没有数据库引擎,而且客户端也进行了数据过滤.

我会将此项目迁移到SQL Server,但遗憾的是在这种情况下无法完成.

我想知道是否有比使用Access数据库更可靠的解决方案,并仍然使用单文件数据库系统.

我们使用dBase IV有相当庞大的系统.据我所知,它是完全多用户数据库系统.

也许用它代替Access会很好吗?是什么让我不确定dBase IV比Access 2000更老的事实.我不确定它是否是一个很好的解决方案.

也许还有其他一些选择?

c# database ms-access ms-access-2000

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