小编Dan*_*rth的帖子

如何创建Expression<Func<T, TRelated>>的集合?

我有一个具有以下方法的存储库:

IEnumerable<T> FindAll<TRelated>(Specification<T> specification,
                                 Expression<Func<T, TRelated>> fetchExpression);
Run Code Online (Sandbox Code Playgroud)

我需要传递多个表达式。我正在考虑将签名更改为:

IEnumerable<T> FindAll<TRelated>(Specification<T> specification, 
                                 IEnumerable<Expression<Func<T, TRelated>>> fetchExpression);
Run Code Online (Sandbox Code Playgroud)
  1. 这可能吗?
  2. 例如,如何创建一个表达式数组以传递到此方法中?

目前我正在从服务层调用该方法,如下所示:

var products = productRepository.FindAll(specification,p => p.Variants);
Run Code Online (Sandbox Code Playgroud)

但我想通过p => p.Variantsp => p.Reviews例如。然后在存储库中,我想迭代表达式并将它们添加到查询中。

有关我为什么这样做的一些背景信息,请参阅 Ben Foster 的有关使用 NHibernate 进行预加载的博客文章。

linq specification-pattern linq-to-nhibernate linq-expressions

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

将String XML转换为C#中的数据表

<NewDataSet>
  <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="Table">
            <xs:complexType>
              <xs:attribute name="DataColumn" type="xs:string" />
              <xs:attribute name="ddlSchema" type="xs:string" />
              <xs:attribute name="ddlTable" type="xs:string" />
              <xs:attribute name="ddlColumn" type="xs:string" />
              <xs:attribute name="DefaultValue" type="xs:string" />
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <Table DataColumn="ID" ddlSchema="" ddlTable="" ddlColumn="" DefaultValue="" />
  <Table DataColumn="CategoryName" ddlSchema="" ddlTable="" ddlColumn="" DefaultValue="" />
  <Table DataColumn="ParentCatID" ddlSchema="" ddlTable="" ddlColumn="" DefaultValue="" />
  <Table />
</NewDataSet>
Run Code Online (Sandbox Code Playgroud)

是我的Xml,它保存在数据库列中,所以它将如何转换为数据集,以便我可以绑定网格?任何建议

c#

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

如何使用DateTime.TryParse将日期从yyyyMMdd格式转换为mm-dd-yyyy格式

我有一个字符串,其中包含yyyyMMdd格式的日期.我想使用ConvertTo.DateTime()方法或任何其他简单方法将该日期转换为系统日期格式.

我用过:

string time = "19851231";
DateTime theTime= DateTime.ParseExact(time,
                                    Culture, DateTimeStyles.None, out resultDt);
Run Code Online (Sandbox Code Playgroud)

它没有返回任何东西,实际上我对文化信息感到困扰.我不知道它存在于哪种文化中.

.net .net-3.5

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

是否可以将通用 IEnumerable 传递给函数?

我有这个功能:

private void Pager(IEnumerable<t> tEnum)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

我想传递不同的 IEnumerable,比如IEnumerable<MyObject1>IEnumerable<MyObject2>

是否可以?

c# ienumerable function

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

当程序集路径和版本不同时,Assembly.LoadFrom返回相同的程序集

想象一下这种情况:

var ass1 = Assembly.LoadFrom(@"C:\Work\3.59\assembly1.dll");
var ass2 = Assembly.LoadFrom(@"C:\Work\3.60\assembly1.dll");

Debug.Assert(ass1 != ass2);
Run Code Online (Sandbox Code Playgroud)

上述断言失败了.即使上面的两个程序集具有不同的版本和位置,第二个调用似乎也会返回第一个程序集.

程序集没有强名称,无法签名.

有没有办法强制框架在相同的上下文和域中加载它们?

.net c# assemblies

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

WCF - 错误:无法获取元数据

当我尝试从WCF测试客户端运行我的应用程序时,我收到以下错误:

错误:无法从http:// localhost:53867/MyAPI.svc获取元数据如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布.
有关启用元数据发布的帮助,请参阅http://go.microsoft.com/fwlink/?LinkId=65455上的MSDN文档.WS- Metadata Exchange错误
URI:http:// localhost:53867/MyAPI.svc
元数据包含无法解析的引用:'http:// localhost:53867/MyAPI.svc'.
内容类型application/soap + xml; 服务http:// localhost:53867/MyAPI.svc不支持charset = utf-8 .
客户端和服务绑定可能不匹配.
远程服务器返回错误:(415)不支持的媒体类型.HTTP GET错误
URI:http:// localhost:53867/MyAPI.svc
HTML文档不包含Web服务发现信息.

这是我的一些web.config:

    <system.web>
    <compilation debug="true" targetFramework="4.0">
        <assemblies>
            <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        </assemblies>
    </compilation>
    <membership defaultProvider="CustomMembershipProvider">
        <providers>
            <clear/>
            <add name="CustomMembershipProvider" type="Namespace.Models.MyMembershipProvider" />
        </providers>
    </membership>
</system.web>
<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="MembershipBinding">
                <security mode ="Message">
                    <message clientCredentialType="UserName"/>
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="MyServiceBehavior">
                <serviceCredentials>
                    <userNameAuthentication
                    userNamePasswordValidationMode="MembershipProvider" …
Run Code Online (Sandbox Code Playgroud)

c# wcf wcf-security

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

托管WCF服务时出错

我试图在IIS中托管WCF服务,但我收到以下错误."无法读取配置部分'oracle.dataaccess.client',因为它缺少部分声明"

我添加了以下程序集.

add assembly="Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89B483F429C47342"
Run Code Online (Sandbox Code Playgroud)

并宣布

<oracle.dataaccess.client>
    <settings>
        <add name="SubbType" value="udtMapping factoryName='Project.TypeObjects.TYP_SUBMISSION_PROCESSFactory, PublicKeyToken=NULL'            typeName='TYP_SUBMISSION_PROCESS' schemaName='ABC' dataSource='XYZ'"/>       
    </settings>
 </oracle.dataaccess.client>
Run Code Online (Sandbox Code Playgroud)

这个错误的原因是什么?

.net hosting wcf

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

将IQueryable列表转换为通用列表?

我正在尝试调用GetScanningLogOnSettings(),查询ScanningDepartments表以获取部门,然后创建实例ApplicationLogOnModel,将查询结果分配给其中的变量ApplicationLogOnModel,并返回结果.

private ApplicationLogOnModel GetScanningLogOnSettings()
   {
       var mesEntity = new MESEntities();
       var departments = from dept in mesEntity.ScanningDepartments
                         select dept.Department.ToList();

       ApplicationLogOnModel depts = new ApplicationLogOnModel()
       {
           Department = departments
       };

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

它给了我:

"无法隐式转换 'System.Linq.IQueryable<System.Collections.Generic.List<char>>'System.Collections.Generic.List<Models.Department>'

尝试转换为列表,我遇到了一些麻烦.

c# asp.net-mvc linq-to-entities

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

来自参数的通用T而不是手动指定

我写了这堂课:

public class ResultsPair<T>
{
    public T Value { get; set; }
    public ResultsItem Result { get; set; }

    public ResultsPair(ResultsItem result, T value)
    {
        Result = result;
        Value = value;
    }

    public static ResultsPair<T> Create(ResultsItem result, T value)
    {
        return new ResultsPair<T>(result, value);
    }

    public static ResultsPair<T> CreateSuccess(T value) => Create(ResultsItem.Success(string.Empty), value);
    public static ResultsPair<T> CreateError(ResultsItem result) => Create(result, default(T));
}
Run Code Online (Sandbox Code Playgroud)

要打电话给我,我会这样做:

ResultsPair<User>.CreateSuccess(newUser);
ResultsPair<User>.CreateError(ResultsItem.Error("A server connection error has occured."));
Run Code Online (Sandbox Code Playgroud)

在第一个,newUser是User类型,所以我不想使用<User>再次手动定义它.

在CreateError上,我没有问题手动定义T类,因为默认情况下它不会知道它.

在Create方法上,我需要这样做ResultsPair<User>.Create(ResultsItem, User).我不喜欢哪个.ResultsPair.Create(ResultsItem, User)应该够了.

有没有办法让它实现我想要的? …

c# generics

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

仅对Webpack中的某些输出文件使用chunkhash

我正在构建一个正在作为其他应用程序中的插件加载的应用程序。语法思考或对讲。
因此,我将有一个javascript文件(加载程序),客户需要在其应用程序中引用该文件。
该文件又添加了一个iFrame并加载了引用我的主捆绑包的index.html。

现在,我希望加载程序的文件名中不包含chunkhash,但捆绑软件中应包含chunkhash。

可能?如果是这样,怎么办?

我的webpack配置(从弹出create-react-app-typescript):

entry: {
    app: [require.resolve('./polyfills'), paths.appIndexJs],
    loader: "./src/integration/loader.ts"
},
output: {
    // The build folder.
    path: paths.appBuild,
    // Generated JS file names (with nested folders).
    // There will be one main bundle, and one file per asynchronous chunk.
    // We don't currently advertise code splitting but Webpack supports it.
    filename: '[name].[chunkhash:8].js',
    chunkFilename: '[name].[chunkhash:8].chunk.js',
    // We inferred the "public path" (such as / or /my-project) from homepage.
    publicPath: publicPath,
    // Point sourcemap entries to …
Run Code Online (Sandbox Code Playgroud)

javascript typescript webpack

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