小编Bil*_*3rd的帖子

阅读SQL Analysis Services元数据

我的SSAS多维数据集中有许多对象,其中许多对象被创建为不可见.例如:

CREATE MEMBER CURRENTCUBE.[Measures].[Latency Backcolor]
AS CASE
  WHEN [Average Latency] > [Web Alert] THEN 6384849
  WHEN [Average Latency] > [Web Warn] THEN 4577517
  ELSE IIF ( [measures].[Query count] > NULL, 14876123, null)
END, VISIBLE = 0;
Run Code Online (Sandbox Code Playgroud)

这是可见的:

CREATE MEMBER CURRENTCUBE.[Measures].[Average Latency]
 AS IIF ([Measures].[Query Count] > 0, [Measures].[Total Ms] / [Measures].[Query Count], null),
      FORMAT_STRING = "#,##0.00000;-#,##0.00000",
      BACK_COLOR = [Latency Backcolor],
      VISIBLE = 1,
      DISPLAY_FOLDER = 'Overall',
      ASSOCIATED_MEASURE_GROUP = 'Fact Raw FD';
Run Code Online (Sandbox Code Playgroud)

.

我试过两种方法来询问立方体.首先,使用Microsoft.AnalysisServices.AdomdClient命名空间.例如:

using …
Run Code Online (Sandbox Code Playgroud)

sql-server ssas mdx adomd.net

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

将 VARBINARY 传递给存储过程

我有一些格式为 ASCII 十六进制的源数据。我需要将其放入 SQL 数据库的 VARBINARY 字段中。我已将问题减少到最低限度以说明我想做的事情。我有一个存储过程:

CREATE PROCEDURE BinaryDemo
    @BinaryData varbinary(max)
AS
BEGIN
    PRINT @BinaryData;
END
Run Code Online (Sandbox Code Playgroud)

我知道它“有效”,因为我可以这样做:

DECLARE @tmp varbinary(max);
SET @tmp = CONVERT(varbinary, '1234567890abcdef', 2);
EXEC BinaryDemo @BinaryData=@tmp;
Run Code Online (Sandbox Code Playgroud)

我想做的是跳过中间步骤并调用如下过程:

EXEC BinaryDemo @BinaryData=CONVERT(varbinary, '1234567890abcdef', 2);
Run Code Online (Sandbox Code Playgroud)

不幸的是,SQL 抱怨语法:关键字“CONVERT”附近的语法不正确。

我知道 CONVERT 是正确的,因为我可以:

PRINT CONVERT(varbinary, '1234567890abcdef', 2);
Run Code Online (Sandbox Code Playgroud)

我看到的正是我所期望的。由于源数据的性质和数量,第一个示例(声明/设置/执行)确实是一个糟糕的选择。

parameters stored-procedures varbinary sql-server-2008-r2

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

反射类型的默认值(T)

在浏览其他答案时,我想出了以下扩展方法:

public static T Convert<T>( this string input )
{
    var converter = TypeDescriptor.GetConverter( typeof( T ) );
    if ( converter != null )
    {
        try
        {
            T result = (T) converter.ConvertFromString( input );
            return result;
        }
        catch
        {
            return default( T );
        }
    }
    return default( T );
}
Run Code Online (Sandbox Code Playgroud)

我可以像以下一样使用它:

string s = "2011-09-21 17:45";
DateTime result = s.ConvertTo( typeof( DateTime ) );
if ( result == DateTime.MinValue )
    doSomethingWithTheBadData();
Run Code Online (Sandbox Code Playgroud)

真棒!效果很好.现在,我想用反射类型做类似的事情.我有:

public static dynamic ConvertTo( this string input, Type …
Run Code Online (Sandbox Code Playgroud)

c# generics reflection

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

将对象转换为List <object>

我看过类似的问题,但没有什么比较适合的.我有一个碰巧包含List的对象.我想把它变成我能列举的东西.

例如:

object listObject;          // contains a List<Something>
List<object> list;

list = listObject as List<object>;   // list contains null after

foreach ( object o in list )
{
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

从对象到List <object>的转换是个问题.

编辑:

我完成了什么:

object listObject;          // contains a List<Something>
List<object> list;

IEnumerable enumerable = listObject as IEnumerable;

if ( enumerable != null )
{
    list = enumerable.Cast<object>().ToList();

    foreach ( object o in list )
    {
         // do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

c# list object

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

将对象及其类型传递给方法

我有三个类:SomeThing,SomeOtherThing和YetAntherThing.这三个都有一个名为Properties的相同成员.在每个类中,它是一个键/值对,因此我可以引用obj1.Name,obj1.Value,obj2.Name,obj2.Value,obj3.Name和obj3.Value.我想将这三个对象传递给一个方法,该方法可以遍历各自的"属性"集合,而无需在编译时知道它正在进行哪些操作.我想象的是:

SomeThing obj1;
SomeOtherThing obj2;
YetAntherThing obj3;

DoProperties( obj1, obj1.GetType() );
DoProperties( obj2, obj2.GetType() );
DoProperties( obj3, obj3.GetType() );

...

private void DoProperties( object obj, Type objectType )
{
    // this is where I get lost. I want to "cast" 'obj' to the type
    // held in 'objectType' so that I can do something like:
    //
    // foreach ( var prop in obj.Properties )
    // {
    //    string name = prop.Name;
    //    string value = prop.Value;
    // }
}
Run Code Online (Sandbox Code Playgroud)

注意:SomeThing,SomeOtherThing和YetAntherThing类是在外部定义的,我无法控制它们或访问它们的源代码,它们都是密封的.

c# reflection

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