我有一个班级AccountCommList
,它有一个属性Media
,可以是电话,电子邮件,纸张等。
我需要调用另一个List,其中包含媒体类型Phone
是移动版还是固定电话(用0或1表示),另一个列表还有importance
属性显示他们认为的顺序应该在表示联系顺序的列表中更高。这是我的代码。
protected int RetrievePhoneType(string info, string acctNumber)
{
int type = xPhoneTypeList.Where(p => p.PhoneNum == info && p.AccountNum == acctNumber).Select(p => p.PhoneType).FirstOrDefault();
return type;
}
此代码选择它是单元格还是固定电话,请记住此PhoneTypeList还包含我需要的importance
属性。
这是linq声明。
PhoneTypeListInfo xPhoneTypeList = new PhoneTypeListInfo();
AccountCommList commList = new AccountCommList(acct.AccountNumber, "WEBUSER");
AccountCommList cellPhoneList = commList.Where(x=> x.Media == "Phone").Where(x => 1 == RetrievePhoneType(x.Info, acct.AccountNumber)).OrderByDescending(?????).ToList();
我非常确定我需要修改RetrievePhoneType方法,但我不确定如何在commList
修改 为后代展示AccountCommList。
public class AccountCommList
{
public AccountCommList();
public string ContactID { get; set; }
public string Info { get; set; }
public string Media { get; set; }
}
编辑2
显示具有重要性属性的PhoneTypeListInfo。
public class PhoneTypeListInfo
{
public string AccountNum { get; set; }
public int PhoneType { get; set; }
public string PhoneNum { get; set; }
public int Importance { get; set; }
}
答案 0 :(得分:1)
将返回类型更改为PhoneTypeListInfo。
protected PhoneTypeListInfo RetrievePhoneType(string info, string acctNumber)
{
var type = xPhoneTypeList
.Where(p => p.PhoneNum == info && p.AccountNum == acctNumber)
.FirstOrDefault();
return type;
}
然后使用LINQ理解语法。因此很容易关联集合。
var cellPhoneList = (from x in commList
where x.Media == "Phone"
let p = RetrievePhoneType(x.Info, acct.AccountNumber)
where 1 == p.PhoneType
orderby p.Importance descending
select x).ToList();
无论如何,您的方法总是返回第一个找到的对象。所以排序是不可能的。
答案 1 :(得分:0)
试
.OrderByDescending(p=>p.YourProperty)