0

私は次のクラスを持っています:-

public class ContactsDetails
    {
        public IEnumerable<AaaUserContactInfo> Info { get; set; }
    }

ここで、AaaUserContactInfoには、他のテーブルを参照する2つの外部キーがあります。

public partial class AaaUserContactInfo
    {
        public long USER_ID { get; set; }
        public long CONTACTINFO_ID { get; set; }
        public string desc { get; set; }

        public virtual AaaContactInfo AaaContactInfo { get; set; }
        public virtual AaaUser AaaUser { get; set; }
    }

これで、新しいContactDetailsオブジェクトを開始する次のクラスができました。-

public ActionResult CustomersDetails(long[] OrganizationIds)
{

    if (OrganizationIds == null)
    {
        return RedirectToAction("customer", new { isError = true });
    }
    else
    {

        var ContactsDetails = new ContactsDetails
        {
            Info = r.getcontactinfo(OrganizationIds)
        };
    }

        return View();    

}

ここで、組織名の一部を含む電子メールIDを持つすべてのAaaUserContactInfoオブジェクトを返す必要があります。これは次のようになります。-

public IEnumerable<AaaUserContactInfo> getcontactinfo(long[] Organizationid)
        {
            var result = ((from uci in entities.AaaUserContactInfoes
                          join ci in entities.AaaContactInfoes on uci.CONTACTINFO_ID equals ci.CONTACTINFO_ID
                          where ci.EMAILID.ToString() == // contains any organization name in their emailIds ,, where i can get the organization name using sonthing similar to var orgname = entities.SDOrganizations.Where(a => a.ORG_ID == OrganizationIds[i]).FirstOrDefault().NAME;
                               select uci)) ;
            return result;
                                }
4

1 に答える 1

1

次のクエリを使用してみてください。FirstOrDefault()あなたの例でnullを返したら、あなたが何をしたいのかわかりません。私の場合、例外はスローされませんが、レコードは返されません。実装の詳細と、それが機能したかどうかについて注意してください。

public IEnumerable<AaaUserContactInfo> getcontactinfo(long[] organizationIds)
{
    var organizationNames = entities.SDOrganizations
                           .Where(org => organizationIds.Contains(org.ORG_ID))
                           .Select(org=> org.Name);


    var result = from userContactInfo in entities.AaaUserContactInfoes
                 join contactInfo in entities.AaaContactInfoes on userContactInfo.CONTACTINFO_ID equals contactInfo.CONTACTINFO_ID

                 //check if EMAILID string has at least one organizationName as substring
                 where organizationNames.Any(orgName => contactInfo.EMAILID.ToString().Contains(orgName))
                 select userContactInfo;
    return result;
}

編集:に基づいて選択された多くの組織を処理するために回答を更新しましたOrganizationid。次に、少なくとも1つのogranizationの名前フィールドにが含まれてentities.AaaContactInfoesいる場合に選択されます。EMAILID

注:コードを読みやすくするために、メソッドスコープでのみ使用されるいくつかの引数の名前を変更しました。

于 2013-01-04T00:27:22.367 に答える