私はLINQを新しくしましたが、バットから厳しいものに取り組もうとしています。私は私が持っているコードは、EXIDは、内の文字列変数で、以下のようである...C#LINQ toデータセットIN節には、グループ、分が含まれます
DataTable dt = ds.Tables["myTable"];
var query =
from g in dt.AsEnumerable()
where g.Field<string>("exID") == exID
&& smIDs.Contains(g.Field<string>("smID"))
group g by g.Field<string>("smID") into rowGroup
select new
{
smID = rowGroup.Key,
minEntID = rowGroup.Min(g => g.Field<int>("entID"))
};
これまで...次のクエリをデータセットとエミュレートするためにLINQを行うに
を
SELECT smID, MIN(entID) FROM table
WHERE exID = :exID
AND smID IN (1,2,3,4,5,6,7,8, etc)
GROUP BY smID
をしようとしていますメソッドとsmIDsは、メソッドの前に作成された文字列のリストです。私は試してみて、私の結果を確認するには、次のコードを作成し、それは私が私が間違っているのかを把握することができませんでした
if (query.Count() > 0)
{
foreach (var item in query)
{
string s = item.smID;
int i = (int)item.minEntID;
}
}
... query.Countで「System.InvalidCastExceptionの」エラーがスローされます。任意のポインタが最も高く評価されるだろう
at System.Data.DataRowExtensions.UnboxT`1.ValueField(Object value)
at System.Data.DataRowExtensions.Field[T](DataRow row, String columnName)
VSポイントへ...
minEntID = rowGroup.Min(g => g.Field<int>("entID"))
これは、スタックトレースの最初の2行です...。ありがとう。
最初の '&& 'の代わりに' where'を書いていましたか? –
また、g.Field( "smID")... 'によって' ... group g 'と書くこともできます。 –
ええ、最初の&&はごめんなさい – John