0

現在、次のLINQステートメントがあります。

using (MYEntities ctx = CommonMY.GetMYContext())
{
    List<datUser> lstC = (from cObj in ctx.datUser 
                          join fs in ctx.datFS on cObj.UserID equals fs.datUser.UserID 
                          where userOrg.Contains(fs.userOrg.OrgName)
                          select cObj).ToList();

    foreach (datUser c in lstC)
    {
        Claim x = new Claim
        {
            UserID= c.userID,
            FirstName = c.FirstName,
            LastName = c.LastName,
            MiddleName = c.MiddleName,
        };
    }
}

現在、すべてのユーザーが返されますが、複数の組織が関連付けられている場合は重複します。個別のUserIDのみを返すようにするにはどうすればよいですか?

各ユーザーは複数の組織を持つことができますが、実際には、userOrgリストから少なくとも1つの組織を持つユーザーを返す必要があります。

4

3 に答える 3

1

ToListの直前に、を入力し.Distinct()ます。

@DJ BURBに応じて、IEqualityComparerを取り込むDistinctオーバーロードを使用して、各レコードの一意のIDに基づいて実行していることを確認する必要があります。

例については、このブログ投稿をご覧ください。

于 2013-02-08T17:14:07.303 に答える
1

groupbyを使用します。

構文:

var result= from p in <any collection> group p by p.<property/attribute> into grps
             select new 
             {
               Key=grps.Key,
               Value=grps
             } 
于 2013-02-08T17:21:40.397 に答える
0

を呼び出す必要があります。そのコマンドに相当するlinqクエリDistinct()はありません。

于 2013-02-08T17:14:37.777 に答える