有一段时间我会尝试使用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 …
第一个有效的例子:
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)
我知道这是错的,但是为了更好的理解而把它放在这里.我很感激有人向我展示正确的道路:-)
关心马里乌斯
今天我花了几个小时没有运气.我需要做的是编写一个t-sql查询,该查询将在SSMS中执行,并且应该将输出保存到文件中.我有对sql server 2008 r2以及操作系统的完全管理员访问权限(我相信Win 2008 Server)
我不能使用命令行,批处理文件等.它需要直接从SSMS完成,作为执行t-sql脚本.
它甚至不必漂亮:-)它只需要做这个工作.
我非常感谢任何帮助.
关心马里乌斯
我正在尝试映射 C# 字典集合
IDictionary<string, object>
Run Code Online (Sandbox Code Playgroud)
转换为 MATLAB 中使用的特定对象(MWStructArray和MWCellArray)。该集合包含已解析的 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) 我开发了一个网络应用程序,在我公司使用了近几年.在开始时,它管理有关用户,权利等的信息.随着时间的推移,它与其他功能一起成长.它增长到了我有桌子的地步,比方说10-20列,甚至20,000到40,000条记录.
我一直听说Access不适合多用户环境.第二件事是,当我尝试通过网络从表中读取一些记录时,必须将整个表拉到客户端.之所以发生这种情况,是因为服务器端没有数据库引擎,而且客户端也进行了数据过滤.
我会将此项目迁移到SQL Server,但遗憾的是在这种情况下无法完成.
我想知道是否有比使用Access数据库更可靠的解决方案,并仍然使用单文件数据库系统.
我们使用dBase IV有相当庞大的系统.据我所知,它是完全多用户数据库系统.
也许用它代替Access会很好吗?是什么让我不确定dBase IV比Access 2000更老的事实.我不确定它是否是一个很好的解决方案.
也许还有其他一些选择?
c# ×4
automapper ×1
contains ×1
database ×1
json ×1
linq ×1
linq-to-sql ×1
matlab ×1
ms-access ×1
performance ×1
t-sql ×1