相关疑难解决方法(0)

Razor中的动态匿名类型导致RuntimeBinderException

我收到以下错误:

'object'不包含'RatingName'的定义

当您查看匿名动态类型时,它显然具有RatingName.

错误的屏幕截图

我意识到我可以用元组做到这一点,但我想理解为什么会出现错误信息.

dynamic anonymous-types razor asp.net-mvc-3

155
推荐指数
5
解决办法
6万
查看次数

C#中的动态数组

有没有在C#中创建动态数组的方法?

c#

104
推荐指数
5
解决办法
52万
查看次数

如何在代码中编写JSON字符串值?

我想将以下字符串存储在String变量中

{ "ID": "123", "DateOfRegistration": "2012-10-21T00:00:00 + 05:30", "状态":0}

这是我使用的代码..

String str="{"Id":"123","DateOfRegistration":"2012-10-21T00:00:00+05:30","Status":0}";
Run Code Online (Sandbox Code Playgroud)

..但它显示错误..

c# string syntax json

18
推荐指数
7
解决办法
3万
查看次数

C#动态对象初始值设定项不会编译

以下代码对我来说似乎很合理.它应该创建对象,然后使用动态功能让我分配我喜欢的任何属性.但是编译器说"ExpandoObject不包含Test的定义".我说,"我知道,这是一个怪胎!"

dynamic example = new ExpandoObject
{
  Test = "fail"
};
Run Code Online (Sandbox Code Playgroud)

任何想法为什么csc不允许这样做.

另一种方法是手动将代码扩展为单独的属性分配.

dynamic example = new ExpandoObject();
example.Test = "fail";
Run Code Online (Sandbox Code Playgroud)

当我有很多属性需要分配时,这很烦人.

c# dynamic c#-4.0

13
推荐指数
2
解决办法
1982
查看次数

如何在表达式树中实例化和初始化动态对象?

IQuerayble<TItem>我们合作时,我们可以这样打电话Select:

query.Select( item => new { A=item.Prop1, B=item.Prop2});
Run Code Online (Sandbox Code Playgroud)

Select方法预期Expression<Func<TItem,TResult>>

我需要使用ExpandoObject而不是匿名但静态类型的类.

如果有可能,它看起来像:

query.Select( item => dynamic new ExpandoBoject { A=item.Prop1, B=item.Prop2});
Run Code Online (Sandbox Code Playgroud)

所以我想构建表达式树Expression<Func<TItem,ExpandoObject>>,其中对象的属性以与匿名类型类似的方式初始化.
只有初始化才需要动态功能,因此Func返回ExpandoObject而不是dynamic.

我找不到很多关于Expression.Dynamic我应该使用的文档和相应的粘合剂.


更新1

为什么我需要这些东西?
因为我想获得主键.
我想为任何实体类型做这件事.

我知道如何获得组成PK的属性列表,但现在我需要对实体做一个棘手的投影EntityKey.好吧,可能与这个班级相同.

var keys = context.Set<TEntity>().Where(Expression<Func<TEntity,bool>).Select(Expression<Func<TEntity,EntityKey>>);
Run Code Online (Sandbox Code Playgroud)

正如我在评论中指出的那样,包含块的lambdas无法转换为表达式树,所以我不能简单地创建字典并填充它.现在,我正在使用语义上接近此代码的表达式树:

var dict = new Dictionary<string,object>();
dict.Add("Prop1",value1);
dict.Add("Prop2",value2);
return dict
Run Code Online (Sandbox Code Playgroud)

但我怀疑EF可以解析包含块的表达式.需要检查.
我很好奇它是否适用于动态对象和Expression.MemberInit,因为它适用于静态对象.


更新2

实体框架不支持字典初始化语法.
它抛出NotSupportedException了以下消息:LINQ to Entities中仅支持具有单个元素的列表初始化项.


更新3

EF不支持块表达式.
NotSupportedExceptionwith message:'Block'类型的未知LINQ表达式.

.net c# iqueryable dynamic expression-trees

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

制作混合数组变量?

我想知道我是否可以在数组中添加一些变量,并以一种简单的方式访问它们:

string[] ArrayName = {
    string abc;
    string varName;
}

//and later access them like:
Console.WriteLine(ArrayName[ab+"c"]);
Run Code Online (Sandbox Code Playgroud)

c# arrays variables

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