在SharePoint 2010中使用Linq时候,请注意特殊字符

SharePoint 2010 增加了对LINQ的支持,增强了开发的能力。那么其中好事有一些晓得细节需要我们注意的。

例子:有一个自定义列表“Citys”, 其中包含一个”选项”类型的字段“GDP”,它包含如下的两个选项:

image

那么你有没有尝试过如何去使用LINQ获得这列的值,我们来看一下:

首先使用SPMetal工具生成实体类,我们在实体类中找到“GDP”这个字段:

 internal enum GDP : int
    {
        None = 0,
        Invalid = 1,
        [Microsoft.SharePoint.Linq.ChoiceAttribute(Value = "5 per user/month")]
        _5PerUserMonth = 2,
        [Microsoft.SharePoint.Linq.ChoiceAttribute(Value = "10 per company/month")]
        _10PerCompanyMonth = 4,
    }

如果这个时候,你直接使用

item.GDP.Value

来获得这列的值,那么你得到的肯定是“_5PerUserMonth” 或者 “_10PerCompanyMonth” , 而没有办法得到他真正的值。谁叫C#的变量命名规则不让使用“空格”或者“/”等呢。这个时候我们需要利用发射来获取到里面的值。

 

public void GetGDP()
{
    var ctx =
       new CityDataContext(WebUrl);
    var cityList = from c in ctx.Citys
                   select c;
    foreach (var item in cityList)
    {
        Console.WriteLine(stringValueOf(item.GDP));
    }
    
}

public string stringValueOf(Enum value)
{
    FieldInfo fi = value.GetType().GetField(value.ToString());
    Microsoft.SharePoint.Linq.ChoiceAttribute[] attributes =
        (Microsoft.SharePoint.Linq.ChoiceAttribute[])fi.GetCustomAttributes(
        typeof(Microsoft.SharePoint.Linq.ChoiceAttribute),false);
    if (attributes.Length > 0)
    {
        return attributes[0].Value;
    }
    else
    {
        return value.ToString();
    }
}
如果列表中的其他列里面也存有这样的值,那么你使用的时候还真的要注意了。

转载于:https://www.cnblogs.com/fanwenxuan/archive/2011/03/20/1989260.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值