0

というDataTable名前がありdtます。と という名前の 2 つの列がatype_codeありmoduleます。ここで、特定の に基づいてモジュールを照会する必要がありますatype_code

ここに私が書いたコードがありますが、動作しません。

DataTable dt = GetATypeCodeList();
var accType = (from myAccType in dt.AsEnumerable()
           where myAccType.Field<string>("atype_code") == aTypeCode.Trim()
           select myAccType.Field<string>("module"));

acctypeですSystem.Data.EnumerableRowCollection<System.String>

4

1 に答える 1

1

あなたが言ったので、

特定の atype_code に基づいてモジュールを照会する必要がある

、私はあなたmoduleが与えられatype_codeた .

次に、Single/SingleOrDefaultまたはFirst/を使用する必要がありますFirstOrDefault

String firstModule = dt.AsEnumerable()
                       .Where(r => r.Field<string>("atype_code") == aTypeCode.Trim())
                       .Select(r => r.Field<string>("module"))
                       .FirstOrDefault();
// or
String singleModule = dt.AsEnumerable()
                       .Where(r => r.Field<string>("atype_code") == aTypeCode.Trim())
                       .Select(r => r.Field<string>("module"))
                       .SingleOrDefault();

Enumerable.Single一致する要素が複数ある場合は例外をスローします。これは、データを検証するのに役立ちます。

編集

クエリ構文は次のとおりです。

IEnumerable<String> modules =  
    from myAccType in dt.AsEnumerable()
    where myAccType.Field<string>("atype_code") == aTypeCode.Trim()
    select myAccType.Field<string>("module");
String module = modules.FirstOrDefault(); // returns null if no matching modules were found
于 2012-06-27T10:23:47.463 に答える