0
public List<Workflow> GetMyWorkflows(int[] MyRoles)
        {
            int[] myWorkflowIDs = new int[] { };
            RapidWorkflowDataContext context = new RapidWorkflowDataContext();
                var query = from w in context.WorkflowRoles
                            where MyRoles.Contains((int)w.RoleID)
                            select w.WorkflowID;
                var distinctWorkflows = query.Distinct();
                myWorkflowIDs = distinctWorkflows.toArray();
                return myWorkflowIDs;
        }

このメソッドでは、ユーザーがアクセスできるワークフローの配列を取得したいと考えています。次のエラーが表示されます: 型 'int?[]' を 'int[]' に暗黙的に変換できません

4

4 に答える 4

0

これは私にはかなり良いエラーのようです

Cannot convert type 'int?[]' to 'int[]'

タイプの配列が必要であり、int?それを暗黙的に に変換しようとしていintます。

したがって、次の 2 つのオプションがあります。暗黙の変換を停止し、次のように結果を許可しますint?[]

int?[] myWorkflowIDs = new int?[] { };

または、次のように強制的に変換を実行します。

RapidWorkflowDataContext context = new RapidWorkflowDataContext();
var query = from w in context.WorkflowRoles
        where MyRoles.Contains((int)w.RoleID)
        select (int)w.WorkflowID;
        // or w.WorkflowID ?? 0; as necessary
于 2013-08-14T13:29:32.893 に答える
0

したがって、基本的に値を取ることができるintであるint?と書くこともできます。例えば:Nullable<int>null

int? nullableNumber = 5;   // Set to a value
nullableNumber = null?     // Set to null (which is possible because int? is nullable).

ご想像のとおり、Nullable<int>はデータベースに役立ちます。これは、null 値を持つ列がある場合があるためです。このタイプは、この種の値にマッピングする便利な手段を提供します。ただし、問題は、コード内で 2 つの異なる型を処理する必要があることintですint?。以下を使用して、2 つの値の間でキャストできます。

// If the nullable-integer is not-null then use it's value, else default to `0`.
int nonNullable = nullableNumber ?? 0; 

0値がnullの場合、nullを置き換えます。myWorkflowIDsまたは、null 許容値 (Nullable<int>[]または) に格納することもできますint?[]。これは、データベース内の列の値が実際に何であるかを意味的により適切に反映します。

于 2013-08-14T13:29:12.477 に答える