我有以下SQL,我试图将其转换为LINQ:
SELECT f.value
FROM period as p
LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17
WHERE p.companyid = 100
Run Code Online (Sandbox Code Playgroud)
我已经看到了左外连接的典型实现(即into x from y in x.DefaultIfEmpty()等),但我不确定如何引入其他连接条件(AND f.otherid = 17)
编辑
为什么AND f.otherid = 17条件是JOIN的一部分而不是WHERE子句?因为f某些行可能不存在,我仍然希望包含这些行.如果条件在WHERE子句中应用,在JOIN之后 - 那么我没有得到我想要的行为.
不幸的是:
from p in context.Periods
join f in context.Facts on p.id equals f.periodid into fg
from fgi in fg.DefaultIfEmpty()
where p.companyid == 100 && fgi.otherid == 17
select f.value
Run Code Online (Sandbox Code Playgroud)
似乎等同于:
SELECT …Run Code Online (Sandbox Code Playgroud) 我有一个ListViewItem我正在申请一个Style,我想把一个虚线灰色线作为底部Border.
我怎么能在WPF中这样做?我只能看到纯色画笔.
我正在使用EPPlus在C#中生成XLSX文件.一旦我用内存流实例化ExcelPackage - 我收到错误:
"写操作期间发生磁盘错误.(HRESULT异常:0x8003001D(STG_E_WRITEFAULT))"
代码是:
MemoryStream stream = new MemoryStream();
using (ExcelPackage package = new ExcelPackage(stream))
{
...
}
Run Code Online (Sandbox Code Playgroud)
有没有人见过这个?
我正在研究POCO和DTO之间的差异(似乎POCO与行为有关(方法?))并且Martin Fowler在贫血领域模型上发现了这篇文章.
由于缺乏理解,我认为我已经创建了这些贫血领域模型之一.
在我的一个应用程序中,我将业务域实体定义为'dto'dll.他们有很多属性,包括getter和setter,而不是其他.我的业务逻辑代码(填充,计算)位于另一个"bll"dll中,我的数据访问代码位于"dal"dll中.我认为'最佳实践'.
所以通常我会像这样创建一个dto:
dto.BusinessObject bo = new dto.BusinessObject(...)
Run Code Online (Sandbox Code Playgroud)
并将其传递给bll层,如下所示:
bll.BusinessObject.Populate(bo);
Run Code Online (Sandbox Code Playgroud)
反过来,它执行一些逻辑并将其传递给dal层,如下所示:
dal.BusinessObject.Populate(bo);
Run Code Online (Sandbox Code Playgroud)
根据我的理解,为了使我的dto成为POCO,我需要将业务逻辑和行为(方法)作为对象的一部分.所以代替上面的代码更像是:
poco.BusinessObject bo = new poco.BusinessObject(...)
bo.Populate();
Run Code Online (Sandbox Code Playgroud)
即.我在对象上调用方法而不是将对象传递给方法.
我的问题是 - 我怎么能这样做,仍然保留关注点的'最佳实践'层次(单独的dll等...).不调用对象上的方法意味着必须在对象中定义方法?
请帮助我的困惑.
如果我在C#中有一个二维数组 - 我怎样才能将它转换为包含二维数组的JSON字符串?
例如.
int[,] numbers = new int[8,4];
JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize(numbers);
Run Code Online (Sandbox Code Playgroud)
在JSON对象中给出一个平面的一维数组.Microsoft文档说明:
'多维数组被序列化为一维数组,你应该将它用作平面数组.
我有一个相当标准的OLTP规范化数据库,我已经意识到我需要做一些复杂的查询,平均值,数据中不同维度的标准偏差.
所以我转向SSAS并创建了OLAP多维数据集.
然而,为了创建立方体,我相信我的数据源结构需要采用"星形"或"雪花"配置(我认为现在不是这样).
通常的过程是使用SSIS在我的主OLTP DB上进行某种ETL过程,进入另一个具有事实和维度的正确"星形"配置的关系数据库,然后使用此DB作为OLAP多维数据集的数据源?
谢谢
我有一个自定义.wpp.targets文件,它设置了一些ACL.当我在visual studio中构建时,生成的源清单文件包含自定义ACL.
当我从构建服务器运行时,它只是不起作用.生成的文件不包含.wpp.targets文件中的acl.
构建服务器安装了.net框架4,Web部署,它具有正确的Microsoft.Web.Publishing.targets文件.我在服务器上的构建中包含了一些诊断,其中似乎"AfterAddIisSettingAndFileContentsToSourceManifest"属性为false.我不熟悉msbuild.有人可以帮忙吗?
编辑:
我注意到在我的Microsoft.Web.Publishing.targets中有以下几行:
<PropertyGroup>
<WebPublishPipelineCustomizeTargetFile Condition="'$(WebPublishPipelineCustomizeTargetFile)'==''">$(WebPublishPipelineProjectDirectory)\$(WebPublishPipelineProjectName).wpp.targets</WebPublishPipelineCustomizeTargetFile>
</PropertyGroup>
<Import Project="$(WebPublishPipelineCustomizeTargetFile)" Condition="Exists($(WebPublishPipelineCustomizeTargetFile))"/>
Run Code Online (Sandbox Code Playgroud)
但是,msbuild的输出中没有关于webpublishpipeline的内容.我认为我的.wpp.targets文件甚至没有被查看!
目标文件:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<!--
********************************************************************
Task Custom ACLs
********************************************************************
-->
<PropertyGroup>
<!-- Extends the AfterAddIisSettingAndFileContentsToSourceManifest action to also set ACLs-->
<AfterAddIisSettingAndFileContentsToSourceManifest Condition="'$(AfterAddIisSettingAndFileContentsToSourceManifest)'==''">
$(AfterAddIisSettingAndFileContentsToSourceManifest);
SetCustomACLs;
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="SetCustomACLs">
<Message Text="Adding Custom ACls" />
<ItemGroup>
<!--Make sure the by default Networkservice/AppPoolIdentity have write permission to the root-->
<MsDeploySourceManifest Include="setAcl" >
<Path>$(_MSDeployDirPath_FullPath)\bin\ABCpdf8-64.dll</Path>
<setAclAccess>ReadAndExecute</setAclAccess>
<setAclResourceType>File</setAclResourceType>
<AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
msbuild输出:
[GenerateMsdeployManifestFiles] CallTarget
[22:13:44]: [CallTarget] Target "PipelinePreDeployCopyAllFilesToOneFolder" skipped. …Run Code Online (Sandbox Code Playgroud) 使用以下代码,我在"返回书籍"上收到"无法隐式转换"编译错误.线.
我认为,因为我返回一个实现IPublication的书籍对象列表,这应该工作正常吗?
public interface IPublication {}
public class Book : IPublication {}
public List<IPublication> GetBooks()
{
List<Book> books = new List<Book>();
return books;
}
Run Code Online (Sandbox Code Playgroud)
我注意到,如果我将一本书作为单个IPublication对象返回,它可以正常工作.介绍List<>需要显式转换.
作为我正在使用的解决方法:
return books.Cast<IPublication>().ToList();
Run Code Online (Sandbox Code Playgroud) 我有一个WPF点击一次应用程序,它使用一个非托管的DLL.
在本地调试时,我刚刚将dll复制到debug/bin文件夹中.
如何在项目中包含dll(VS2010),以便部署并可以访问应用程序?
我已经尝试将其添加为资源并设置"内容"和"始终复制",并且该文件似乎确实存在于设置/部署文件中,但是应用程序无法看到它.
如果它有帮助,这是我用来访问非托管DLL中的方法的代码示例.
[DllImport("ODBC_VER_DETECT.dll")]
extern private static long GetCompanyFileVersion([MarshalAs(UnmanagedType.LPStr)] String sDataBase,
[MarshalAs(UnmanagedType.LPStr)] StringBuilder sVersion);
Run Code Online (Sandbox Code Playgroud)